這個程序讀入一系列每日的最低溫度(攝氏度),並報告輸入的總數,以及最低溫度在零度如下的天數的百分率。在一個循環裏使用scanf()讀入數值,在每一次循環中增長計數器的值來統計輸入數值的個數。if語句檢測低於零度如下的溫度並單獨統計這些天的數目。express
程序清單7.1 colddays.cui
------------------------------------code
//colddays.c --求出溫度低於零度的天數的百分率 #include <stdio.h> int main (void) { const int FREEZING = 0; float temperature; int cold_days = 0; int all_days = 0; printf("Enter the list of daily low temperatures.\n"); printf("Use Celsius,and enter q to quit.\n"); while(scanf("%f",&temperature)==1) { all_days++; if(temperature<FREEZING) cold_days++; } if(all_days!=0) printf("%d days total:%.1f%% were below freezing.\n", all_days,100.0*(float)cold_days / all_days); if(all_days==0) printf("No data entered!\n"); return 0; } /*下面是一個運行示例: Enter the list of daily low temperatures. Use Celsius,and enter q to quit. 12 5 -2.5 0 6 8 -3 -10 5 10 q 10 days total:30.0% were below freezing. */
用float而不是int來聲明temperature,這樣程序就既能接受像8那樣的輸入,也能接受像-2.5這樣的輸入。編譯器
爲了不整數除法,示例程序在計算百分率時使用了類型轉換float。使用類型轉換能夠代表意圖,並保護程序免受不完善編譯器的影響。it
if語句被稱爲分支語句(branching statement)或選擇語句(selection statement),由於它提供了一個交匯點,在此處程序選擇兩條分支中的一條前進。通常形式以下:io
if(expression)編譯
statementclass
若是expression爲真,就執行statement;不然跳過該語句。和while語句的區別在於在if中,判斷和執行只有一次,而在while循環中,判斷和執行能夠重複屢次。object
注意,即便if中使用了一個複合語句,整個if結構仍將被看做一個簡單的語句。select