程式由若干條語句組成,各語句按照順序一條一條地執行,這種順序結構是簡潔的。但在現實世界中,在解決問題的過程中,不可避免地遇到需要進行選擇、或需要迴圈工作的情況。這時,程式執行的順序需要發生變化,而非從前向後逐一執行。因此,程式中除了順序結構以外,通常還有選擇結構、迴圈結構以及轉移機制。C++為了支援這些控制結構,提供了豐富、靈活的控制語句。從結構化程式設計的觀點看,所有程式都可用3種控制結構即順序結構、選擇結構、和迴圈結構實現。C++在預設的情況下采取順序結構,除非特別指明,計算機總是按語句順序一條一條地執行。為使程式更清晰、更易除錯與修改,並且不容易出錯,結構化程式設計要儘量少用或不用goto等跳轉語句。
工具/原料
dev-c++
if選擇結構
一、if語句(單分支結構)
格式1:
if (條件表示式)
語句1;
功能:如果條件表示式的值為真,即條件成立,語句1將被執行。否則,語句1將被忽略(不被執行),程式將按順序從整個選擇結構之後的下一條語句繼續執行。執行流程如圖3-1所示
說明:格式中的“條件表示式”必須用圓括號括起來。
格式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;
執行流程如圖所示
格式2 :
if (條件表示式)
{ 語句1;
語句2;
……
}
else
{ 語句1;
語句2;
……
}
若分支語句由多個句子構成,我們必須把這些句子括在一對花括號{ }內。if語句允許巢狀。
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和後面的常量表達式及冒號組成,每個常量表達式通常為字面常量,如常數或字元。
下方兩圖實際上相等。
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.…都是一組語句,有時可為空。