if语句基本结构
多分支结构中的else块是可选的,请看下面的无else块的多分支结构。
例程序和结果:
if语句嵌套
多分支结构优化
单级嵌套不“优化”关系不大,但如果是多级嵌套另当别论。假如增加一个选项,题目改为:完成八个任务以上获得劳动英雄称号,完成六到八个任务获得劳动之星称号,……。
多级嵌套代码:
多分支结构代码:
事实上并不见得多分支结构代码有多“优”,只是它们的应用情景不一样而已。请看下面的代码:
结论:当if代码块之间不存在关联,可以使用嵌套或多分支结构,否则最好用嵌套结构。
浮点数比较运算总结
我们知道,计算机是用二进制记录数据的,那么小数点后第一位是1/2,第二位是1/4,第三位是1/8,如此类推,因此用二进制表示的小数转为分数之后,它的分母一定是以2为底的幂。例如
二进制数0.11010011
=1/2+1/4+0/8+1/16+0/32+0/64+1/128+1/256
=1/256×(128+64+16+2+1)
=211/256。
但分数中除了分母是以2为底的幂的分数外,还有其它大量的分数,也就是说浮点数只能准确表示小部分小数,大部分小数只是一个近似值。以一个近似值作为比较基准必然会产生误判的情况,所以浮点数比较运算只适合具体问题具体分析,不像整数一样比较运算适合任何情况。
在具体的情景中,例如短跑的时间秒数,记录到小数后第二位,即精确度是0.01,那么我们可以认为变化幅度在0.001的浮点数是同一个小数。现假设a和b是精确度c的两个小数,那么它们可以按下面的表格进行比较运算。
对应运算符 | 功能描述 | 实现方法 |
> | 大于 | a>b+c/10 |
< | 小于 | a<b-c/10 |
>= | 大于等于 | a>b-c/10 |
<= | 小于等于 | b<b+c/10 |
== | 等于 | a>b-c/10 and a<b+c/10 |
!= | 不等于 | a<b-c/10 or a>b+c/10 |
太麻烦了,有没有简单一点的办法啊?当然有,转为整数后再进行比较运算:
int(a/c) 比较运算符 int(b/c)。
练习题
第一题:
第二题:
第三题:
第四题:
学校开运动会,100米的校记录是11.56秒,现在输入的5个运动员成绩,设计一个程序判断是否破记录。使用浮点数比较和整数比较两种方法。
例:
输入数据:
12.32
11.59
11.54
11.54
11.52
程序输出:
不破纪录
不破纪录
破纪录
不破纪录
破纪录