第7章 C控制语句:分支和跳转
學習筆記——《C Prime Plus》
第7章 C控制語句:分支和跳轉
- 7.1 if 語句
- 7.2 if else 語句
- 7.2.1 介紹 getchar() 和 putchar()
- 7.4 一個統計單詞的程序
7.1 if 語句
下程序讀取一列數據,每個數據都表示每日的最低溫度(℃),然后打印統計的總天數和最低溫度在 0℃ 以下的天數占總天數的百分比。程序中的循環通過 scanf() 讀入溫度值。while 循環每迭代一次,就遞增計數器增加天數,其中的 if 語句負責判斷 0℃ 以下的溫度并單獨統計相應的天數。
#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; }運行結果:
程序分析
- while 循環的測試條件利用 scanf() 的返回值來結束循環,因為 scanf() 在讀到非數字字符時會返回 0。temperature 的類型是 float 而不是 int, 這樣的程序既可以接受 -2.5 這樣 的值,也可以接受 8 這樣的值。
- 循環中 if 的語句:如果剛讀取的值(temperature)小于 0,就把 cold_days 遞增 1;如果 temperature 不小于 0,就跳過 cold_days++; 語句,while 循環繼續讀取下一個溫度值。
- 接著,該程序又用了兩次 if 語句控制程序的輸出。如果有數據,就打印結果;如果沒有數據,就打印一條信息。
- 為避免整數除法,該程序實例把計算后的百分比強制轉換為 float 類型。
if 語句被稱為分支語句(branching statement)或選擇語句(selection statement)
它相當于一個交叉點,程序在兩條分支中選擇一條執行。對條件判斷為真(非 0),則執行 statement;否則,跳過 statement。
7.2 if else 語句
簡單形式的 if 語句可以讓程序選擇執行一條語句,或者跳過這條語句。
C 還提供了 if else 形式,可以在兩條語句之間作選擇。
如果 if 判斷為真 (非 0),則執行 statement1;如果 expression 為假或 0,則執行 else 后面的 statement2。
如果要在 if 和 else 之間執行多條語句,必須用花括號把這些語句括起來成為一個塊。
7.2.1 介紹 getchar() 和 putchar()
對字符輸入/輸出函數:getchar() 和 putchar()
getchar() 函數不帶任何參數,它從輸入隊列中返回下一個字符。例如,下面的語句讀取下一個字符輸入,并把該字符的賦值給變量 ch:
putchar() 函數打印它的參數。例如,下面的語句把之前賦給 ch 的值作為字符打印出來:
putchar(ch); //等同于下面的語句 printf("%c", ch);由于這些函數只處理字符,所以它們比更通用的 scanf() 和 printf() 函數更快、更簡潔。而且,注意 getchar() 和 putchar() 不需要轉換說明,因為它們只處理字符。這兩個函數通常定義在 stdio.h 頭文件。
7.4 一個統計單詞的程序
編寫一個統計單詞數量的程序(即,該程序讀取并報告單詞的數量)。該程序還可以計算字符數和行數。
首先,該程序要逐個字符讀取輸入,知道何時停止讀取。然后,該程序能識別并計算這些內容:字符、行數和單詞。
編寫偽代碼:
運行結果:
總結
以上是生活随笔為你收集整理的第7章 C控制语句:分支和跳转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第6章 C控制语句:循环
- 下一篇: 阿里云离线数据仓库