編寫程序度气,打印華氏溫度到攝氏溫度的轉換表诡宗,要求按照從 300 度到 0 度逆序打印锹雏。
/* fahr2Celsius_for_1.c */
#include <stdio.h>
int main() {
float fahr;
for (fahr = 300; fahr >= 0; fahr -= 20) {
printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
}
return 0;
}
for
也是 C 語言的一種循環(huán)語句,它是對 while
的一種推廣抠璃,相比 while
站楚,for
語句更加直觀。for
語句比較適合初始化和增加步長都是單條語句并且邏輯相關的情形搏嗡。
上述程序中 printf 的第三個參數(shù)是計算攝氏溫度的表達式窿春,C 語言允許使用復雜的表達式來替代同類型變量值:
printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
/* 等價于 */
celsius = (5.0 / 9.0) * (fahr - 32);
printf("%3.0f\t%6.1f\n", fahr, celsius);
上述程序的編譯運行結果:
300 148.9
280 137.8
260 126.7
240 115.6
220 104.4
200 93.3
180 82.2
160 71.1
140 60.0
120 48.9
100 37.8
80 26.7
60 15.6
40 4.4
20 -6.7
0 -17.8
上面的程序在 for 循環(huán)里使用了 300、20 這樣的常量采盒,C 語言中把直接使用的常數(shù)稱之為 “幻數(shù)”旧乞。在程序中大量使用幻數(shù)會使得程序的修改變得更加困難,也降低了程序的可讀性磅氨。
for (fahr = 300; fahr >= 0; fahr -= 20) {
printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
}
使用 #define
可以把一個符號名定義為一個特定的字符序列(包括數(shù)字)尺栖,注意 define 語句不需要分號:
#define name replacement-list
符號常量名通常用大寫字母拼寫,以便于與小寫字母拼寫的變量名區(qū)分烦租。符號常量不是變量延赌,因此不需要再進行聲明除盏。所以上述的程序可以改寫成:
/* fahr2Celsius_for_2.c */
#include <stdio.h>
#define LOWER 0
#define UPPER 300
#define STEP 20
int main() {
float fahr;
for (fahr = UPPER; fahr >= LOWER; fahr -= STEP) {
printf("%3.0f\t%6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
}
return 0;
}