c++之選擇結構?

程式由若干條語句組成,各語句按照順序一條一條地執行,這種順序結構是簡潔的。但在現實世界中,在解決問題的過程中,不可避免地遇到需要進行選擇、或需要迴圈工作的情況。這時,程式執行的順序需要發生變化,而非從前向後逐一執行。因此,程式中除了順序結構以外,通常還有選擇結構、迴圈結構以及轉移機制。C++為了支援這些控制結構,提供了豐富、靈活的控制語句。從結構化程式設計的觀點看,所有程式都可用3種控制結構即順序結構、選擇結構、和迴圈結構實現。C++在預設的情況下采取順序結構,除非特別指明,計算機總是按語句順序一條一條地執行。為使程式更清晰、更易除錯與修改,並且不容易出錯,結構化程式設計要儘量少用或不用goto等跳轉語句。

工具/原料

dev-c++

if選擇結構

一、if語句(單分支結構)

格式1:

if (條件表示式)

語句1;

功能:如果條件表示式的值為真,即條件成立,語句1將被執行。否則,語句1將被忽略(不被執行),程式將按順序從整個選擇結構之後的下一條語句繼續執行。執行流程如圖3-1所示

說明:格式中的“條件表示式”必須用圓括號括起來。

c++之選擇結構

格式2 :

if (條件表示式)

{

語句1;

語句2;

……

}

條件成立時,要執行的操作由多個句子構成,我們必須把這些句子括在一對花括號{ }內,我們稱這種形式為語句塊或複合語句。

二、if-else語句(雙分支結構)

if單分支選擇結構只在條件為true時採取操作,條件為false時則忽略這個操作。利用if-else雙分支選擇結構則可以在條件為true時和條件為false時採取不同操作。

格式1:

功能:如果(條件表示式)的值為“真” ,即條件成立,則執行語句1,執行完“語句1”後繼續執行整個if-else語句的後繼語句;如果(條件表示式)的值為“假” ,即條件不成立,那麼跳過語句1選擇執行“語句2” ,執行完語句2後繼續執行整個if-else語句的後繼語句;也就是說if-else語句總是根據(條件表示式)的結果,選擇“語句1”和“語句2”中的一個執行,執行完以後,整個if-else就算執行完了。

if (條件表示式)

語句1;

else

語句2;

執行流程如圖所示

c++之選擇結構

格式2 :

if (條件表示式)

{ 語句1;

語句2;

……

}

else

{ 語句1;

語句2;

……

}

若分支語句由多個句子構成,我們必須把這些句子括在一對花括號{ }內。if語句允許巢狀。

c++之選擇結構

switch語句

應用條件語句可以很方便地使程式實現分支,但是出現

分支比較多的時候,雖然可以用巢狀的if語句來解決,但是程

序結構會顯得複雜,其至凌亂。為方便實現多情況選擇,C++

提供了一種switch開關語句。

1.語句格式:

switch(表示式)

{

case 常量表達式1:

語句序列1;

break;

case 常量表達式2:

語句序列2;

break;

……

case 常量表達式n:

語句序列n;

break;

default:

語句序列n+1;

}

該語句中可以使用一次或多次case標號,但只能使用一次default標號,或者省略整個default部分;多個case標號也允許使用在同一個語句序列的前面;每個語句標號有保留字case和後面的常量表達式及冒號組成,每個常量表達式通常為字面常量,如常數或字元。

下方兩圖實際上相等。

c++之選擇結構

c++之選擇結構

2.語句執行過程

switch語句執行過程分為以下3步描述。

(1)計算出switch後面圓括號內表示式的值,假定為M,若它不是整型,系統將自動捨去其小數部分,只取其整數部分作為結果值。

(2)依次計算出每個case後常量表達式的值,假定它們為M1、M2、…,同樣若它們的值不是整型,則自動轉換為整型。

(3)讓M依次同M1、M2、…進行比較,一旦遇到M與某個值相等,則就從對應標號的語句開始執行;在碰不到相等的情況下,若存在default子句,則就執行其冒號後面的語句序列,否則不執行任何操作;當執行到複合語句最後的右花括號時就結束整個switch語句的執行。在實際使用switch語句時,通常要求當執行完某個case後的一組語句序列後,就結束整個語句的執行,而不讓它繼續執行下一個case語句後面的語句序列,為此,可通過使用break語句來實現。該語句只有保留字break,而沒有其它任何成分。它是一條跳轉語句,在switch中執行到它時,將結束該switch語句,系統接著向下執行其它語句。

在使用switch語句時,還應注意以下幾點:

1.case語句後的各常量表達式的值不能相同,否則會出現錯誤碼。

2.每個case或default後,可以包含多條語句,不需要使用“{”和“}”括起來。

3.各case和default子句的先後順序可以變動,這不會影響程式執行結果。

4. default子句可以省略,default後面的語句末尾可以不必寫break。

注意事項

1.每個case後面的語句可以寫在冒號後的同一行或換到新行寫。

2.…都是一組語句,有時可為空。

相關問題答案