对于某个特定任务我们可以采用多种方法来编写程序。下面这段代码也可以实现前面的温度转换程序的功能:#include
/*打印华氏温度—摄氏温度对照表*/
main()
{
int fahr;
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1fn", fahr, (5.0/9.0)*(fahr-32));
}
温度的下限、上限和步长都是常量,printf 函数的第三个参数必须是与%6.1f 匹配的浮点值,所以可以在此处使用任何浮点表达式。
for 语句是一种循环语句,它是对 while 语句的推广。如果将 for 语句与前面介绍的 while 语句比较,就会发现 for 语句的操作更直观一些。圆括号中共包含 3 个部分,各部分之间用分号隔开。第一部分 fahr = 0 是初始化部分,仅在进入循环前执行一次。第二部分 fahr <= 300 是控制循环的测试或条件部分。循环控制将对该条件求值,如果结果值为真(true),则执行循环体(本例中的循环体仅包含一个 printf 函数调用语句)。此后将执行第三部分 fahr = fahr + 20 以将循环变量 fahr 增加一个步长,并再次对条件求值。如果计算得到的条件值为假(faise),循环将终止执行。与 while 语句一样,for 循环语句的循环体可以只有一条语句,也可以是用花括号括起来的一组语句。初始化部分(第一部分)、条件部分(第二部分)与增加步长部分(第三部分)都可以是任何表达式。
在实际编程过程中,可以选择 whi1e 与 for 中的任意一种循环语句,主要要看使用哪一种更清晰。for 语句比较适合初始化和增加步长都是单条语句并且逻辑相关的情形,因为它将循环控制语句集中放在一起,且比 while 语句更紧凑。
练习:修改温度转换程序,要求以逆序(即按照从 300 度到 0 度的顺序)打印温度转换表。
#include
/*打印华氏温度—摄氏温度对照表*/
main()
{
int i;
int fahr;
for (fahr = 300; fahr >= 0; fahr = fahr - 20)
printf("%3d %6.1fn", fahr, (5.0/9.0)*(fahr-32));
scanf("%d", &i);
}