1.3 for循环语句
对于某个特定的任务可以使用不同的方式来编写程序。让我们试着对温度转换程序做些改动。
#include <stdio.h>
/* print Fahrenheit-Celsius table */
main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f/n", fahr, (5.0/9.0)*(fahr-32));
}
这段程序输出相同的结果,但是显然它看起来不一样。一个主要的改变是去掉了大多数变量,仅仅保留了“fahr”,同时我们将它改为int类型。上下限和步长仅仅在for语句中作为常量出现,这是一种新的结构,同时计算摄氏温度的表达式现在是作为printf函数的第三个参数,它代替了一条单独的赋值语句。
最后的改变是关于一个惯例的实例:在任何允许使用某种类型值的上下文中,你都可以使用一条相同类型的更为复杂的表达式。因为printf函数的第三个参数必须是一个浮点类型以匹配“%6.1f”,所以任何浮点类型的表达式都可以出现在这里。
for语句是一条循环语句,是对while循环的一般化。如果你将它和前面的while语句相比较,(则可得出)它的操作显得更清晰。在圆括号中,有三个部分,它们被分号隔开。第一部分,初始化:
fahr = 0;
只在完全进入循环之前执行一次;第二部分,控制循环的测试或者条件:
fahr <= 300;
这个条件被测试,如果为真,则循环体(这里只是单一的printf语句)将被执行;然后是累加步骤:
fahr = fahr + 20;
被执行,之后条件将被再次验证。当条件为假时则循环终止。和while循环一样,for循环的循环体可以是一条语句或者是用大括号括起来的一组语句。其中的初始化、条件测试和累加可以是任何表达式。
对while循环和for循环的选择是随意的,这得看哪一个显得更清晰。for循环通常适合初始化和累加语句是一条语句和逻辑相关的循环,因为它比while循环更紧凑,同时它也将循环的控制语句放在同一个地方。
练习 1-5:修改温度转换程序来反向打印那个表,就是,从300度到0度。