威力巨大的循环登场啦!
1 2 3 4 | 【打印华氏温度与摄氏温度对照表】 【文件复制】 【统计字符】 【行计数】 |
使用公式℃=(5/9)(℉-32)打印下列华氏温度与摄氏温度对照表
1 2 3 4 5 6 7 8 9 10 11 | 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 |
你应该已经会输出单独的一行。现在要学习的是怎么计算一定范围内的表达式值并输出。
本题中,摄氏温度的变化从 0 ~ 200,每次递增 20
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main() { int f; f = 0; 当 f 小于等于 200 时 { 计算华氏温度 c 并根据要求输出; f 递增 20; /* 递增就是在原来的基础上增加20 */ } return 0; } |
大括号 { } 中有两个操作,可以把这两个操作看成是一个整体,在C语言中称为复合语句。
上面的代码翻译成 C 语言,就是
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main() { int f; f = 0; while (f <= 200) { printf("%3d %6.1f\n", f, (5.0/9.0)*(f-32)); f = f + 20; } return 0; } |
在C语言中,还可以用 for 语句来表示循环。
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> int main() { int f; for (f = 0; f <= 200; f = f + 20) { printf("%3d %6.1f\n", f, (5.0/9.0)*(f-32)); } } |
for 语句的圆括号中共包含 3 个部分:初始化部分(f = 0)、条件部分( f <= 200)与增加步长部分(f = f + 20),各部分之间用分号隔开。 你可以和 while 进行对比来理解 for 循环。 while 和 for 语句可以相互转换。for 转换为 while 的规则是:
1 2 3 | 移动初始化部分到 整个 while 语句的前面; 增加步长部分移到 while 语句执行部分的最后; for 改为 while,并移除 ()中的分号; |
上面的程序功能正确,但不够优雅。
在程序中,如果类似 20 和 200 之类的数字太多,整个程序就不太好理解,也不利于程序的改动。
下面的程序是建议的写法。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> #define LOWER 0 #define UPPER 200 #define STEP 20 int main() { int f; for (f = LOWER; f <= UPPER; f = f + STEP) printf("%3d %6.1f\n", f, (5.0/9.0)*(f-32)); } |
那为什么 5、9、32 并没有替换呢? 原因很简单:这几个数字是整个公式的一部分,不会变化。
对比一下,温度的上下界和步长却常常会变化的。