示例:編寫能夠打印華氏-攝氏溫度轉(zhuǎn)換表的程序
假設(shè)您要編寫一個能夠打印華氏-攝氏溫度轉(zhuǎn)換表的程序??梢允褂胒or或者while循環(huán)可以輕松實現(xiàn):
#include
int main()
{int a;a=0;while (a <=100)
{printf("%4d華氏度=%4d攝氏度
return 0;}
該程序運行后將打印從華氏0度到華氏100度的轉(zhuǎn)換表。輸出如下:
0華氏度=-17攝氏度
10華氏度=-12攝氏度
20華氏度=-6攝氏度
30華氏度=-1攝氏度
40華氏度=4攝氏度
50華氏度=10攝氏度
60華氏度=15攝氏度
70華氏度=21攝氏度
80華氏度=26攝氏度
90華氏度=32攝氏度
100華氏度=37攝氏度
上表中溫度值以10度為間隔遞增。您會發(fā)現(xiàn)通過程序改變表中溫度的起始值、結(jié)束值和遞增值都很容易。
如果想讓溫度值更加精確的話,您可以改用浮點數(shù)值:
#include
int main()
{float a;a = 0;while (a <= 100)
{printf("%6.2f 華氏度 = %6.2f 攝氏度
return 0;}
如上例所示,a的聲明改用float,而且在printf語句中用符號%f代替了符號%d。此外,還在符號%f前規(guī)定了一些格式:打印數(shù)值時使用6位整數(shù)和2位小數(shù)。
現(xiàn)在我們要修改程序,使它在適當?shù)奈恢貌迦?8.6度。即,我們還是每隔10度打印,但是要增加一行98.6華氏度,因為它是人體的正常體溫。下面的程序會滿足我們的要求:
#include
int main()
{float a;a = 0;while (a <= 100)
{if (a > 98.6)
{printf("%6.2f 華氏度 = %6.2f 攝氏度\n",98.6, (98.6 - 32.0) * 5.0 / 9.0);}
printf("%6.2f 華氏度 = %6.2f 攝氏度\n",a, (a - 32.0) * 5.0 / 9.0);
a = a + 10;}return 0;}
結(jié)束值是100時,上面的程序可以正常工作。但如果將結(jié)束值變成200,您就會發(fā)現(xiàn)程序的一處錯誤:打印了太多次98.6度。我們可以用多種方法改正這個錯誤。下面是其中之一:
#include
int main()
{float a, b;a = 0;b = -1;while (a <= 100)
{if ((a > 98.6) && (b < 98.6))
{printf("%6.2f 華氏度 = %6.2f 攝氏度\n",98.6, (98.6 - 32.0) * 5.0 / 9.0);
}printf("%6.2f 華氏度 = %6.2f 攝氏度\n",a, (a - 32.0) * 5.0 / 9.0);b = a;a = a + 10;}
return 0;}
動手一試
嘗試修改華氏-攝氏度轉(zhuǎn)換程序,以使該程序使用scanf接受用戶輸入,作為結(jié)果輸出表格的起始、結(jié)束和增量值。
為表格制作表頭。
試用另一種方法解決上例的程序改正的錯誤。
制作一個英鎊-千克或英里-公里的轉(zhuǎn)換表。?
?
C 常見錯誤
在if或while語句中錯用=代替==。
忘記在while循環(huán)中增加計數(shù)器的值——這會導(dǎo)致無限循環(huán)(永不結(jié)束的循環(huán))。
不留神在for循環(huán)或if語句末尾加上了分號,使語句起不了作用。例如:
for (x=1; x<10; x++);
printf("%d\n",x);
只打印出一個值,因為for
評論
查看更多