1.2节给出了本书第二个程序实例,并对该实例进行了讲解。要点有以下一些:
其中我觉得*,/在写法中的先后顺序比较重点。
在初始程序中,有这么一句:
celsius = 5 * (fahr-32) / 9
其中变量celsius,fahr都是int型的。
在该语句中,之所以把表达式写成先乘5然后再除以9而不是直接写成5/9,其原因是在c语言及许多其他语言中, 整数除法操作将执行舍位,结果中的任何小数部分都会被舍弃。由于5和9都是整数,5/9相除后经截取 所得的结果为0,因此这样求得的所有摄氏温度都将为0.
之后将变量改为浮点型,这个问题就不存在了。
练习1-3
在转换表的顶部打印标题,题目很简单,只要注意printf语句的位置即可,解答如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> main() { float fahr,celsius; int lower,upper,step; lower = 0; upper = 300; step = 20; fahr = lower; printf ("华氏温度与摄氏温度对照表\n"); while ( fahr <= upper ){ celsius = 5 * (fahr - 32) / 9; printf("%3.0f %6.1f\n",fahr,celsius); fahr = fahr + step; } } |
程式显示结果:
华氏温度与摄氏温度对照表 0 -17.8 20 -6.7 40 4.4 60 15.6 80 26.7 100 37.8 120 48.9 140 60.0 160 71.1 180 82.2 200 93.3 220 104.4 240 115.6 260 126.7 280 137.8 300 148.9
练习1-4
这个题目就是要逆转公式,原程式是由华氏温度转换为摄氏温度,现在需要修改为摄氏温度转华氏温度,解答如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> main() { float fahr,celsius; int lower,upper,step; lower = -17; upper = 147; step = 10; celsius = lower; printf ("摄氏温度与华氏温度对照表\n"); while ( celsius <= upper ){ fahr = celsius * 9 / 5 +32; printf("%3.0f %6.1f\n",celsius,fahr); celsius = celsius + step; } } |
打印结果:
摄氏温度与华氏温度对照表 -17 1.4 -7 19.4 3 37.4 13 55.4 23 73.4 33 91.4 43 109.4 53 127.4 63 145.4 73 163.4 83 181.4 93 199.4 103 217.4 113 235.4 123 253.4 133 271.4 143 289.4
Post a Comment