




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章選擇結(jié)構(gòu)程序設(shè)計(jì)信息工程學(xué)院主講人:XXX內(nèi)容提要41選擇結(jié)構(gòu)程序舉例2選擇結(jié)構(gòu)和條件判斷423if語句實(shí)現(xiàn)選擇結(jié)構(gòu)42選擇結(jié)構(gòu)的嵌套425switch語句多分支選擇結(jié)構(gòu)24443.1選擇結(jié)構(gòu)程序舉例實(shí)際的生活中往往存在選擇分支的情況,一般來說,像拋硬幣之類的事件存在著正面和反面兩個(gè)分支,像選擇出行路徑之類的事件,往往存在多個(gè)分支,分支的不同將決定程序的不同行為表現(xiàn)。在C語言中,存在著兩種選擇語句:(1)if語句。if語句主要應(yīng)用在判斷條件為一個(gè)區(qū)間,一般為兩個(gè)分支的程序選擇中。(2)switch語句。switch語句主要應(yīng)用在判別條件為具體值時(shí),常用在具有多個(gè)分支的程序選擇中。上面兩個(gè)語句都是應(yīng)用選擇程序結(jié)構(gòu),后面章節(jié)將從簡(jiǎn)單的開始,先介紹兩個(gè)選擇分支的if語句,再?gòu)碾p分支程序進(jìn)行擴(kuò)展,介紹多個(gè)選擇分支的switch語句。3.1選擇結(jié)構(gòu)程序舉例【例3.1】從一元二次方程的求根計(jì)算過程,演示選擇程序如何解決實(shí)際問題。
要求:編程序求解一元二次方程的根,若無實(shí)根則打印說明。
分析:如果要求一元二次方程
的根,則需要判斷
的值,如果
則有實(shí)根,如果
則沒有實(shí)根,然后再根據(jù)求根公式進(jìn)行計(jì)算。
算法流程:(1)獲得鍵盤輸入,得到三個(gè)系數(shù)a,b,c;(2)計(jì)算判斷條件
,若判斷條件
,跳轉(zhuǎn)到步驟(3),若判斷條件
,跳轉(zhuǎn)到步驟(4);(3)打印該二元一次方程沒有實(shí)根;(4)進(jìn)行求根公式計(jì)算,輸出一元二次方程的實(shí)根。3.1選擇結(jié)構(gòu)程序舉例編寫程序:3.2選擇結(jié)構(gòu)和條件判斷一個(gè)選擇結(jié)構(gòu)將伴隨著多個(gè)分支,這些分支代表著程序的執(zhí)行在不同條件下表現(xiàn)出不同的行為。假設(shè)一個(gè)程序需要輸出一個(gè)數(shù)的絕對(duì)值,可以得到如下的算法步驟。步驟一:從程序外輸入整數(shù)X步驟二:判斷輸入的整數(shù)X是否小于0若小于0執(zhí)行步驟三否則執(zhí)行步驟四步驟三:返回-X步驟四:返回X3.2選擇結(jié)構(gòu)和條件判斷代碼實(shí)現(xiàn):3.2選擇結(jié)構(gòu)和條件判斷如上代碼所示,條件判斷對(duì)應(yīng)的代碼為: if(x<0)其雙分支為: if(x<0) return-x; else returnx;當(dāng)x<0的條件為真,則返回-x,條件為假,則返回x。3.3if語句實(shí)現(xiàn)條件判斷-3.3.1if語句處理選擇結(jié)構(gòu)舉例【例3.2】明天不下雨就去郊游(條件為不下雨)算法的步驟:步驟一:獲取天氣輸入,將輸入進(jìn)來的字符串保存在str_weather變量中;步驟二:判斷str_weather是否不等于“rainday”,若為真則執(zhí)行步驟三,否則不執(zhí)行任何操作。
步驟三:打印明天去郊游:Goforanoutingtomorrow!3.3.1if語句處理選擇結(jié)構(gòu)舉例編寫代碼:3.3.1if語句處理選擇結(jié)構(gòu)舉例例3.2中if語句的執(zhí)行順序流程如下圖3-2:開關(guān)型if圖3-2開關(guān)型if3.3.1if語句處理選擇結(jié)構(gòu)舉例if語句的三種應(yīng)用與程序流程圖:簡(jiǎn)化的if語句if-else雙分支語句if-else-if雙分支語句3.3.2簡(jiǎn)單的if結(jié)構(gòu)if語句的最簡(jiǎn)單形式 if(表達(dá)式)語句1【例3.3】考試分?jǐn)?shù)低于60分為不及格(條件為分?jǐn)?shù)大小)。3.3.3if-else語句結(jié)構(gòu)if-else分支結(jié)構(gòu)形式 if(表達(dá)式)語句1[else語句2]【例3.4】考試分?jǐn)?shù)低于60分為不及格,大于或等于60分為及格(條件以分?jǐn)?shù)超過60為界)。3.3.4if-else-if語句結(jié)構(gòu)【例3.5】考試分?jǐn)?shù)小于60分為不及格,大于或等于60分小于70分為合格,大于或等于70分小于80分為良好,大于80分為優(yōu)秀(條件為分?jǐn)?shù)大小)這是一個(gè)擁有多重判斷條件的問題,思路分析如下:(1)對(duì)于分?jǐn)?shù)的評(píng)價(jià)是與分?jǐn)?shù)的區(qū)間有關(guān)(2)分?jǐn)?shù)區(qū)間的邊界為具體的某個(gè)整數(shù)(3)分?jǐn)?shù)區(qū)間具有左關(guān)右開的特征,具體為:[0,60),[60,70),[70,80),[80,100]根據(jù)上面的三點(diǎn),可以理清程序的二分設(shè)計(jì)思路步驟一:選擇某個(gè)數(shù)值進(jìn)行判斷步驟二:將這個(gè)數(shù)值左邊的視為某一個(gè)評(píng)價(jià)區(qū)間,右邊的為多個(gè)區(qū)間進(jìn)行混合,重復(fù)步驟一、二,最終將分?jǐn)?shù)區(qū)間進(jìn)行判斷。3.3.4if-else-if語句結(jié)構(gòu)編寫代碼:3.4選擇結(jié)構(gòu)的嵌套-3.4.2嵌套if語句與程序流程圖if語句的嵌套。具體的代碼模式如下:if(<!--判斷條件1-->)//外層if{ if(<!--判斷條件2-->)//內(nèi)層if {/*判斷條件2為真*/} else {/*判斷條件2為假*/}
if(<!--判斷條件3-->)//內(nèi)層if {/*判斷條件3為真*/} else {/*判斷條件3為假*/}}else{...}3.4.2嵌套if語句與程序流程圖圖3-5:if語句嵌套流程圖3.4.2if語句的嵌套應(yīng)用【例3.6】比較復(fù)雜的行李托運(yùn)情景:
低于20公斤的行李免托運(yùn)費(fèi),高于20公斤低于40公斤部分收1.5元/公斤,高于40公斤部分則按2.0元/公斤(條件為行李重量)
會(huì)員托運(yùn)消費(fèi)打八折(條件為會(huì)員身份)定義算法步驟:步驟一:獲得用戶輸入的行李重量,保存在整型變量weight中步驟二:創(chuàng)建運(yùn)費(fèi)計(jì)量變量money,使用整型類型聲明步驟三:創(chuàng)建會(huì)員身份標(biāo)識(shí)vip,使用整形類型聲明(1為會(huì)員,0不為會(huì)員)步驟四:獲取用戶輸入行李重量以及會(huì)員身份標(biāo)識(shí)步驟五:判斷weight是否高于20,若為否執(zhí)行步驟六,否則執(zhí)行步驟十一步驟六:判斷(weight-20)是否高于20,若為是,執(zhí)行步驟七,否則執(zhí)行步驟八步驟七:計(jì)算20與1.5的乘積加上(weight-40)與2的乘積并將結(jié)果賦值給money步驟八:計(jì)算(weight-20)與1.5的乘積并將結(jié)果賦值給money步驟九:判斷vip值是否等于1,是執(zhí)行步驟十,否則執(zhí)行步驟十一步驟十:計(jì)算money與0.8的乘積并將結(jié)果賦值給money步驟十一:打印所需要的運(yùn)費(fèi)
3.4.2if語句的嵌套應(yīng)用編寫代碼:
3.4.2if語句的嵌套應(yīng)用針對(duì)上面的結(jié)果做簡(jiǎn)單的驗(yàn)證,由于是vip會(huì)員身份,可以得到下列的計(jì)算公式代入數(shù)值為
可以驗(yàn)算計(jì)算結(jié)果的正確性。
注意:在這里涉及到整型與浮點(diǎn)數(shù)的數(shù)據(jù)類型的轉(zhuǎn)換,在c語言中要聲明一個(gè)常量的數(shù)據(jù)類型可以在常量后面加上數(shù)據(jù)類型相關(guān)的縮寫,例如:2.f(單精度常量),123456789012345L(長(zhǎng)整形常量)。同時(shí)if語句的嵌套特性決定了if語句可以進(jìn)行多重嵌套,但是在實(shí)際應(yīng)用場(chǎng)景中,應(yīng)該注意設(shè)計(jì)程序算法流程,在能夠使用if-else-if解決問題的時(shí)候,不建議使用if語句的嵌套,以提高代碼的可讀性。
3.5switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)由于在邏輯結(jié)構(gòu)上,分支的形式不止雙分支。在C語言中可以通過switch關(guān)鍵字進(jìn)行多分支結(jié)構(gòu)的實(shí)現(xiàn)。例如,監(jiān)控用戶的輸入,如果輸入為大寫’A’,’B’,’C’則替換為小寫,否則直接返回。
3.5.1多分支結(jié)構(gòu)一般形式switch語句的一般形式如下:switch(表達(dá)式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結(jié)構(gòu)一般形式switch語句的一般形式如下:switch(表達(dá)式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結(jié)構(gòu)一般形式(5)每個(gè)case后面的常量必須互不相同,否則會(huì)出現(xiàn)矛盾的現(xiàn)象(同值不同的入口沖突)。(6)case標(biāo)號(hào)只起標(biāo)記作用,在執(zhí)行switch語句時(shí),根據(jù)switch表達(dá)式的值找到入口,在執(zhí)行一個(gè)case語句后會(huì)順序執(zhí)行下去,直到遇到break語句跳出順序執(zhí)行。(7)在case語句中如果包含了一個(gè)以上的執(zhí)行語句,可不必加花括號(hào),程序執(zhí)行的時(shí)候會(huì)順序執(zhí)行。當(dāng)然加花括號(hào)括起來也不會(huì)有影響。(8)多個(gè)case語句可以共用一個(gè)執(zhí)行語句,例如:case‘A’:case‘B’:case‘C’:b++;3.5.1多分支結(jié)構(gòu)一般形式使用switch應(yīng)注意以下問題:要注意以下幾點(diǎn)switch括號(hào)內(nèi)的“表達(dá)式”,應(yīng)該為整形(包括字符型)。(2)switch下面的花括號(hào)是一個(gè)復(fù)合語句。意味著包含若干語句,它是switch語句的語句體。語句體內(nèi)包括多個(gè)以關(guān)鍵字case開頭的語句行和一個(gè)以default開頭的語句行,case后面跟著一個(gè)常量或常量表達(dá)式,在表達(dá)式后面需要跟一個(gè)冒號(hào)。如case’A’:,case0:等。(3)switch語句執(zhí)行的時(shí)候,先計(jì)算括號(hào)內(nèi)表達(dá)的值,將這個(gè)值與case后面的常量作匹配,如果匹配成功,則進(jìn)入該case所表3.5.2多分支語句的實(shí)際應(yīng)用示的分支。(4)如果沒有與任何case后面的常量相匹配,則執(zhí)行default后面的(n+1)語句??梢詻]有default標(biāo)號(hào)及后面的(n+1)語句,此時(shí)如果沒有與任何case后面的常量相匹配,則不執(zhí)行任何語句。3.5.2多分支語句的實(shí)際應(yīng)用在前面的章節(jié)中曾經(jīng)用if語句介紹過成績(jī)分段評(píng)價(jià)的例子,以下程序的目的是輸入一個(gè)成績(jī)?nèi)缓笈袛嘣摮煽?jī)的區(qū)間段位。由于成績(jī)的分段之間不存在層級(jí)的邏輯關(guān)系,同時(shí)分段為多段分段,可以采用多分支結(jié)構(gòu)來編程。if語句適合于區(qū)間分段,而switch只適合以點(diǎn)分段。但仔細(xì)觀察分?jǐn)?shù)分段的結(jié)構(gòu)[0,60),[60,70),[70,80),[80,100],會(huì)發(fā)現(xiàn)分段的邊界都是10的整數(shù)倍,利用整數(shù)除法的性質(zhì)做歸一化處理,得出判斷表達(dá)式以及入口常量。3.5.2多分支語句的實(shí)際應(yīng)用【例3.7】下面是使用switch解決問題的代碼:本章小結(jié)本節(jié)闡述了選擇結(jié)構(gòu)控制語句:if、if-else、if-else和switch語句的具體用法。
1.在if語句中,應(yīng)該注意if語句中的表達(dá)式可以為所有的合法的表達(dá)式。
例如:
inta=1;
if(a=0)printf(“Yes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康體檢勞務(wù)合同解除標(biāo)準(zhǔn)指南
- 2025年度無人機(jī)技術(shù)研發(fā)與應(yīng)用合作資源協(xié)議書
- 二零二五年度藝術(shù)衍生品市場(chǎng)正規(guī)藝術(shù)家合作協(xié)議
- 二零二五年度塔吊安裝與吊裝作業(yè)安全保障協(xié)議
- 二零二五年度特色商業(yè)街車位包銷及夜間經(jīng)濟(jì)合同
- 2025年度智慧城市安防系統(tǒng)服務(wù)合同
- 二零二五年度會(huì)議室租賃及茶歇服務(wù)協(xié)議
- 水暖消防工程承包合同
- 小學(xué)生感恩教育故事感悟
- 超市日常運(yùn)營(yíng)管理服務(wù)合同
- 2023年上海市16區(qū)數(shù)學(xué)中考二模匯編2 方程與不等式(39題)含詳解
- 中國(guó)民航大學(xué)開題報(bào)告模板
- 崗位之間工作銜接配合安全與職業(yè)衛(wèi)生事項(xiàng)課件
- 人民幣銀行結(jié)算賬戶管理系統(tǒng)培訓(xùn)課件
- 04S516 混凝土排水管道基礎(chǔ)及接口
- 鋼結(jié)構(gòu)施工安全培訓(xùn)
- 火鍋店消防知識(shí)培訓(xùn)課件
- 超市商品結(jié)構(gòu)圖
- 家庭社會(huì)工作課件
- 嚴(yán)重精神障礙患者個(gè)人信息補(bǔ)充表
- 直腸癌健康宣教
評(píng)論
0/150
提交評(píng)論