官术网_书友最值得收藏!

2.7 基本控制語句

C++程序設計中基本控制結構包括順序結構、選擇結構和循環結構,它們都是通過控制語句實現的。其中順序結構不需要特殊的語句,選擇結構需要通過條件語句實現,循環結構需要用循環語句實現,除此之外,有時程序需要無條件地執行一些操作,這時需要用到轉移語句,接下來詳細講解這3種基本控制語句。

2.7.1 條件語句

條件語句可以給定一個判斷條件,并在程序執行過程中判斷該條件是否成立,根據判斷結果執行不同的操作,從而改變代碼的執行順序,實現更多的功能。例如,想給好友發一封電子郵件,必須將賬號密碼都輸入正確才能進行相關操作,否則登錄失敗需要重新輸入,具體如圖2.24所示。

C++中條件語句有if語句、if-else語句、if-else if-else語句、switch語句。接下來,本節將針對這些條件語句進行逐步講解。

圖2.24 電子郵箱登錄界面

1. if語句

if語句用于在程序中有條件地執行某些語句,其語法格式如下:

如果條件表達式的值為真,則執行其后面的語句,否則不執行該語句。if語句的執行流程,如圖2.25所示。

圖2.25 if語句流程圖

2. if-else語句

if-else語句用于根據條件表達式的值決定執行哪塊代碼,其語法格式如下:

如果條件表達式的值為真,則執行其后面的語句塊1,否則執行語句塊2。if-else語句的執行流程,如圖2.26所示。

圖2.26 if-else語句流程圖

3. if-else if-else語句

if-else if-else語句用于進行多重判斷。例如,參加高考的考生填報志愿,如果分數超過一本分數線,就可填報一本的學校;如果沒有超過一本分數線,就來判斷分數是不是超過二本分數線,超過就可填報二本的學校;如果二本的分數線也沒有超過,就只能填報三本或大專的學校。其語法格式如下:

當執行該語句時,依次判斷條件表達式的值,當出現某個表達式的值為真時,則執行其對應的語句,然后跳出if-else if-else語句繼續執行該語句后面的代碼。如果所有表達式均為假,則執行else后面的語句塊n。if-else if-else語句的執行流程,如圖2.27所示。

圖2.27 if-else if-else語句流程圖

接下來演示if-else if-else語句的用法,如例2-14所示。

例2-14

運行結果如圖2.28所示。

圖2.28 例2-14運行結果

在例2-14中,第7行中的cin為標準庫函數中的一個對象,它用來接收鍵盤輸入,其使用方法與cout相反,cin后面加提取運算符“>>”,要注意該提取運算符“>>”與cout的插入運算符“<<”是正好相反的。本程序的功能是輸入成績,并輸出成績對應的等級。當程序運行輸入s=58.9時,程序依次判斷表達式的真假,先執行表達式s>=90,此時結果為假,則跳過其后面的語句塊,轉而執行表達式s>=80,此時結果仍為假,則繼續跳過其后面語句塊,以此類推。顯然所有的條件表達式結果都為假,因此程序將執行else后面的語句塊,程序最終輸出“不及格”。

4. switch語句

switch語句用于根據表達式的值確定在幾種不同值時執行不同的語句塊,其語法格式如下:

接下來演示switch語句的用法,如例2-15所示。

例2-15

運行結果如圖2.29所示。

圖2.29 例2-15運行結果

在例2-15中,第8行switch檢查grade的值是否與某個case中的值相同,假如相同,那么執行該case中的語句。程序運行輸入“C”,該值被保存在grade變量中,第8行的switch檢查grade的值,發現與第16行的case值相等,因此執行第17行,輸出“分數段為70~80”,然后執行第18行,遇到break語句,退出switch語句,程序轉到第28行來執行。

2.7.2 循環語句

循環結構用于重復執行某一語句塊,在C++中提供了3種形式的循環語句:while循環語句、do-while循環語句和for循環語句。

1. while循環語句

在while循環語句中,當條件表達式為真時,就重復執行循環體語句;當條件為假時,就結束循環,其語法格式如下:

若while循環的循環體只有一條語句,則可以省略左右大括號。while的循環體是否執行,取決于條件表達式是否為真,當條件表達式為真時,循環體就會被執行。循環體執行完畢后繼續判斷條件表達式,如果條件表達式為真,則會繼續執行,直到條件表達式為假時,整個循環過程才會執行結束。while循環的執行流程,如圖2.30所示。

圖2.30 while循環流程圖

接下來演示while循環語句的用法,如例2-16所示。

例2-16

運行結果如圖2.31所示。

圖2.31 例2-16運行結果

在例2-16中,當i=1時,i<101,此時執行循環體語句,sum為1,i為2。當i=2時,i<101,此時執行循環體語句,sum為3,i為3。以此類推,直到i=101,不滿足循環條件,此時程序執行第11行代碼。

2. do-while循環語句

do-while循環語句是非零次循環結構,即至少執行一次循環體。執行過程是先執行循環體結構,然后判斷條件表達式,若條件表達式為真,則繼續執行循環體;若條件表達式為假,則終止循環。在日常生活中,并不難找到do-while循環的影子。例如,在利用提款機提款前,應先進入輸入密碼的畫面,允許用戶輸入3次密碼,如果3次都輸入錯誤,即會將銀行卡吞掉,其程序的流程就是利用do-while循環設計而成的。其語法格式如下:

do-while語句與while語句有一個明顯的區別是do-while語句的條件表達式后面必須有一個分號,用來表明循環結束。do-while循環的執行流程如圖2.32所示。

圖2.32 do-while循環流程圖

接下來演示do-while循環語句的用法,如例2-17所示。

例2-17

運行結果如圖2.33所示。

圖2.33 例2-17運行結果

在例2-17中,程序執行完循環體后,sum為1,i為2,接著判斷i是否小于101,此時i小于101,則執行循環體。直到i為101,不滿足循環條件,此時程序執行第11行代碼。

3. for循環語句

for循環是最常見的循環結構,而且其語句更為靈活,不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定的情況,完全可以代替while循環語句,其語法格式如下:

其中,表達式1常用于初始化循環變量;表達式2是循環條件表達式,當條件為真時,將執行循環體語句,當條件為假時,結束循環;表達式3在每次執行循環體后執行,它一般用于為循環變量增量,for循環的執行流程如圖2.34所示。

接下來演示for循環語句的用法,如例2-18所示。

圖2.34 for循環流程圖

例2-18

運行結果如圖2.35所示。

圖2.35 例2-18運行結果

在例2-18中,先執行i=1,再判斷i是否小于101,此時i小于101,執行循環體,再執行i++,此時i為2,判斷i是否小于101,此時i小于101,執行循環體,以此類推,直到i為101,不滿足循環條件,此時程序執行第10行代碼。

C++中的循環語句也支持嵌套使用,即多重循環,3種格式的循環語句可以根據需求相互嵌套。

2.7.3 轉移語句

轉移語句使函數內的程序無條件地改變控制權,包括break、continue和goto語句。由于這些語句是無條件轉移,因此常常與if等條件語句配合使用。

1. break語句

break語句可以用在switch結構和循環結構中,用于強制退出結構,轉而執行該結構后面的語句。

2. continue語句

continue語句只能用在循環結構中,用于終止本次循環,轉而執行下一次循環。

3. goto語句

goto語句可以用在程序中的任何位置,只能從結構里向結構外跳轉,反之則不行。由于大量使用goto語句會大大降低程序的可讀性,因此在程序設計中建議盡量不用goto語句。

接下來演示break語句和continue語句的用法,如例2-19所示。

例2-19

運行結果如圖2.36所示。

圖2.36 例2-19運行結果

在例2-19中,程序的功能是計算并輸出用戶從鍵盤輸入的正數的平均值(0是輸入結束標志)。程序運行時,當第二次輸入-1時,對應程序中第16~20行代碼,continue的作用僅僅是結束本次循環。當第三次輸入0時,對應程序中第11~15行代碼,break的作用是結束整個循環。

主站蜘蛛池模板: 利辛县| 黄梅县| 大埔县| 阿拉善左旗| 张北县| 青岛市| 略阳县| 巴东县| 平原县| 三河市| 彭水| 广安市| 五莲县| 柏乡县| 陇川县| 东源县| 诏安县| 泸水县| 乐都县| 车致| 宝山区| 昭苏县| 齐齐哈尔市| 孟州市| 济南市| 河西区| 安远县| 黄陵县| 隆化县| 都匀市| 团风县| 景德镇市| 张家川| 沐川县| 沧州市| 平罗县| 谷城县| 塔河县| 元谋县| 中阳县| 博爱县|