日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第7章 C控制语句:分支和跳转

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第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 (all_days != 0)printf("%d days total: %.1f%% were below freezing.\n",all_days, 100.0 * (float) cold_days / all_days); elseprintf("No data entered!\n");//if else 語句的通用形式: if(expression)statement1 elsestatementf2

如果 if 判斷為真 (非 0),則執行 statement1;如果 expression 為假或 0,則執行 else 后面的 statement2。
如果要在 if 和 else 之間執行多條語句,必須用花括號把這些語句括起來成為一個塊。

7.2.1 介紹 getchar() 和 putchar()

對字符輸入/輸出函數:getchar() 和 putchar()
getchar() 函數不帶任何參數,它從輸入隊列中返回下一個字符。例如,下面的語句讀取下一個字符輸入,并把該字符的賦值給變量 ch:

ch = getchar(); //等同于下面的語句 scanf("%c", &ch);

putchar() 函數打印它的參數。例如,下面的語句把之前賦給 ch 的值作為字符打印出來:

putchar(ch); //等同于下面的語句 printf("%c", ch);

由于這些函數只處理字符,所以它們比更通用的 scanf() 和 printf() 函數更快、更簡潔。而且,注意 getchar() 和 putchar() 不需要轉換說明,因為它們只處理字符。這兩個函數通常定義在 stdio.h 頭文件。

7.4 一個統計單詞的程序

編寫一個統計單詞數量的程序(即,該程序讀取并報告單詞的數量)。該程序還可以計算字符數和行數。
首先,該程序要逐個字符讀取輸入,知道何時停止讀取。然后,該程序能識別并計算這些內容:字符、行數和單詞。
編寫偽代碼:

讀取一個字符 當有更多輸入時遞增字符計數如果讀完一行,遞增行數計數如果讀完一個單詞,遞增單詞計數讀取下一個字符如循環輸入模型: while((ch = getchar()) != STOP) //STOP表示能標識輸入末尾的某個值。 {... } #include <stdio.h> #include <ctype.h> //為 isspace()函數提供原型 #include <stdbool.h> //為 bool、true、false 提供定義 #define STOP '|' int main(void) {char c; //讀入字符 char prev; //讀入的前一個字符long n_chars = 0L; //字符數int n_lines = 0; //行數 int n_words = 0; //單詞數 int p_lines = 0; //不完整的行數 bool inword = false; //如果 c 在 單詞中,inword 等于 trueprintf("Enter text to be analyzed (| to terminate):\n"); prev = '\n'; //用于識別完整的行while((c = getchar()) != STOP) {n_chars++; //統計字符if(c == '\n')n_lines++; //統計行if(!isspace(c) && !inword) {inword = true; //開始一個新的單詞n_words++; //統計單詞 }if(isspace(c) && inword)inword = false; //達到單詞的末尾prev = c; }if (prev != '\n')p_lines = 1;printf("characters = %ld, words = %d, lines = %d,", n_chars, n_words, n_lines);printf("partial lines = %d\n", p_lines);return 0; }

運行結果:

總結

以上是生活随笔為你收集整理的第7章 C控制语句:分支和跳转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。