- C語言程序設(shè)計(jì)實(shí)例教程(第3版)
- 李紅 陸建友主編
- 2468字
- 2021-12-17 17:35:20
3.2 選擇結(jié)構(gòu)程序設(shè)計(jì)
學(xué)習(xí)目標(biāo)
1)掌握if語句的語句格式與應(yīng)用。
2)掌握復(fù)合if語句的語句格式與應(yīng)用。
3)掌握條件運(yùn)算符的用法。
4)掌握switch語句的語句格式與應(yīng)用。
5)掌握switch語句中break語句的用法。
實(shí)例13 if語句——根據(jù)條件確定公司是否已經(jīng)為司機(jī)投保
實(shí)例任務(wù)
如果司機(jī)滿足下列條件之一,則公司為他們投保。這3個條件是:①司機(jī)已婚;②司機(jī)為30歲以上的未婚男性;③司機(jī)為25歲以上的未婚女性。如果以上條件一個也不滿足,則公司不為司機(jī)投保。請編寫一個程序,根據(jù)用戶輸入的司機(jī)的婚姻狀態(tài)、性別和年齡,判斷該司機(jī)是否已投保。程序運(yùn)行結(jié)果如圖3-8所示。

圖3-8 程序運(yùn)行結(jié)果

實(shí)例13
程序代碼


相關(guān)知識
1.選擇結(jié)構(gòu)程序設(shè)計(jì)
選擇結(jié)構(gòu)又稱分支結(jié)構(gòu),有二分支結(jié)構(gòu)或多分支結(jié)構(gòu)。選擇結(jié)構(gòu)根據(jù)條件判斷結(jié)果,選擇執(zhí)行不同的程序分支。選擇結(jié)構(gòu)是程序的基本結(jié)構(gòu)之一,幾乎所有程序都包含選擇結(jié)構(gòu)。C語言中可以用兩種控制語句來實(shí)現(xiàn)程序的分支控制,即if語句和switch語句,它們均可構(gòu)成選擇結(jié)構(gòu)。
2.單分支選擇if語句
單分支選擇if語句的形式為:

該語句執(zhí)行過程為先判斷表達(dá)式的值,如果表達(dá)式的值為真,則執(zhí)行后面的語句,否則什么也不做。
3.雙分支選擇if語句
雙分支選擇if語句的形式為:

該語句的執(zhí)行過程為先判斷表達(dá)式的值,如果表達(dá)式的值為真,執(zhí)行語句1,否則執(zhí)行語句2。
4.多分支選擇if語句
多分支選擇if語句的形式為:


該語句的執(zhí)行過程為依次判斷各表達(dá)式的值,當(dāng)某個表達(dá)式的值為真時,執(zhí)行其對應(yīng)的語句體,然后跳到整個if語句之外繼續(xù)執(zhí)行程序;如果所有的表達(dá)式的值均為假,則執(zhí)行語句體n+1,然后繼續(xù)執(zhí)行后續(xù)程序。
實(shí)際上,多分支選擇if語句是雙分支選擇if語句的嵌套形式,即可寫成:

關(guān)于這3種if語句的使用,有以下幾點(diǎn)需要注意。
1)if之后的條件表達(dá)式,必須以“(表達(dá)式)”的形式出現(xiàn),即括號不可少,而表達(dá)式可為任意表達(dá)式,可以是關(guān)系表達(dá)式或邏輯表達(dá)式,也可以為其他表達(dá)式。
2)在后兩種if語句中,語句體都必須以“;”結(jié)束。
3)3種if語句中語句體可以是一條語句,也可以是一條復(fù)合語句。
5.if語句的嵌套
在if語句中又內(nèi)嵌if語句稱為if語句的嵌套。前面已說明,多分支選擇if語句可看成if語句的嵌套形式。其一般形式為:

在使用內(nèi)嵌if語句時,要注意if和else的配對,因?yàn)閕f語句的第一種形式中只有if沒有else。C語言在編譯源程序時總是將else與它前面最近的if配對。
6.條件表達(dá)式構(gòu)成的選擇結(jié)構(gòu)
C語言還提供了一個特殊的運(yùn)算符——條件運(yùn)算符,由此構(gòu)成的條件表達(dá)式也可以形成簡單的選擇結(jié)構(gòu)。這種選擇結(jié)構(gòu)能以表達(dá)式的形式內(nèi)嵌在允許出現(xiàn)表達(dá)式的地方,可以根據(jù)不同的條件使用不同的數(shù)據(jù)參與運(yùn)算。它的運(yùn)算符號“?:”是C語言提供的唯一的三目運(yùn)算符,即要求有3個運(yùn)算對象。它的表達(dá)式形式如下:

當(dāng)“表達(dá)式1”的值為非零時,“表達(dá)式2”的值就是整個條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時,“表達(dá)式3”的值作為整個條件表達(dá)式的值。此運(yùn)算符優(yōu)先于賦值運(yùn)算符,但低于關(guān)系運(yùn)算符與算術(shù)運(yùn)算符。例如有如下表達(dá)式:

首先要求出條件表達(dá)式的值,然后賦給y。在條件表達(dá)式中,要先求出x>10的值。若x大于10,取100作為條件表達(dá)式的值并賦予變量y;若x小于或等于10,則取200作為條件表達(dá)式的值并賦予變量y。
課堂精練
1)輸入三個實(shí)數(shù),按從小到大的順序輸出。程序運(yùn)行結(jié)果如圖3-9所示。
根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。

2)編程實(shí)現(xiàn):根據(jù)性別(sex)和身高(tall)給某數(shù)據(jù)分類,如果sex為'F',當(dāng)tall>=150時,輸出A,否則輸出B;若sex不為'F',當(dāng)tall>=172時,輸出A,否則輸出B。程序運(yùn)行結(jié)果如圖3-10所示。

圖3-9 程序運(yùn)行結(jié)果(1)

圖3-10 程序運(yùn)行結(jié)果(2)
根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。



實(shí)例14
實(shí)例14 switch語句——計(jì)算長方形、圓形和三角形的面積
實(shí)例任務(wù)
編寫一個程序,用于計(jì)算長方形、圓形和三角形的面積,要求能根據(jù)用戶的選擇計(jì)算相應(yīng)形狀的面積。程序運(yùn)行結(jié)果如圖3-11所示。
程序代碼


圖3-11 程序運(yùn)行結(jié)果

相關(guān)知識
1.switch語句以及它與break語句構(gòu)成的選擇結(jié)構(gòu)
switch語句是一種多分支選擇結(jié)構(gòu),語句形式如下:

switch語句是C語言的關(guān)鍵字,switch后面用花括號括起來的部分稱為switch語句體。緊跟在switch后的一對圓括號中的表達(dá)式可以是整型表達(dá)式及后面將要學(xué)習(xí)的字符型表達(dá)式。表達(dá)式兩邊的一對括號不能省略。
case也是關(guān)鍵字,與其后面的常量表達(dá)式合稱為case語句標(biāo)號。常量表達(dá)式的類型必須與switch后面圓括號中的表達(dá)式類型相同,各case語句標(biāo)號的值應(yīng)該互不相同。case語句標(biāo)號后的語句體1、語句體2等,可以是一條語句,也可以是若干條語句。必要時,case語句標(biāo)號后的語句可以省略不寫。
default也是關(guān)鍵字,起語句標(biāo)號的作用,代表所有case語句標(biāo)號之外的標(biāo)號。default語句標(biāo)號可以出現(xiàn)在語句體中的任何標(biāo)號位置上。在switch語句中也可以沒有default語句標(biāo)號。
在關(guān)鍵字case和常量表達(dá)式之間一定要有空格,例如“case 10:”不能寫成“case10:”。
程序中,每個case語句體中均有“break;”語句,它的作用是當(dāng)執(zhí)行到滿足條件的case語句后立刻退出switch語句體。如果沒有“break;”語句,則程序在執(zhí)行了滿足條件的case語句體后,默認(rèn)其后的case語句體和default語句體仍滿足條件,繼續(xù)向后執(zhí)行。例如本實(shí)例程序中,刪除所有的“break;”語句后,如果輸入值為2,則會提示輸入圓的半徑值,然后陸續(xù)提示三角形的相關(guān)信息、退出程序和選項(xiàng)錯誤等提示信息。
2.switch語句的執(zhí)行過程
當(dāng)執(zhí)行switch語句時,首先計(jì)算緊跟其后的一對圓括號中的表達(dá)式的值,然后在switch語句體內(nèi)尋找與該值吻合的case語句標(biāo)號。如果有與該值相等的語句標(biāo)號,則執(zhí)行該語句標(biāo)號后開始的所有語句,直到switch語句體結(jié)束;如果遇到“break;”語句,則退出switch語句體;如果沒有與該值相等的語句標(biāo)號并且存在default語句標(biāo)號,則從default語句標(biāo)號后的語句開始執(zhí)行,直到switch語句體結(jié)束;如果沒有與該值相等的語句標(biāo)號并且沒有default標(biāo)號,則跳出switch語句體,而執(zhí)行之后的語句。
課堂精練
1)根據(jù)輸入的成績段,輸出成績的等級。程序運(yùn)行結(jié)果如圖3-12所示。

圖3-12 程序運(yùn)行結(jié)果(1)
根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。

2)由鍵盤輸入三個整數(shù)a、b、c,輸出三個數(shù)中最大的一個。程序運(yùn)行結(jié)果如圖3-13所示。

圖3-13 程序運(yùn)行結(jié)果(2)
根據(jù)程序運(yùn)行結(jié)果,請將下面的程序補(bǔ)充完整并調(diào)試。

