《C語言程序設(shè)計》 課件 第3章 選擇結(jié)構(gòu)程序設(shè)計_第1頁
《C語言程序設(shè)計》 課件 第3章 選擇結(jié)構(gòu)程序設(shè)計_第2頁
《C語言程序設(shè)計》 課件 第3章 選擇結(jié)構(gòu)程序設(shè)計_第3頁
《C語言程序設(shè)計》 課件 第3章 選擇結(jié)構(gòu)程序設(shè)計_第4頁
《C語言程序設(shè)計》 課件 第3章 選擇結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第3章選擇結(jié)構(gòu)程序設(shè)計信息工程學(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í)際的生活中往往存在選擇分支的情況,一般來說,像拋硬幣之類的事件存在著正面和反面兩個分支,像選擇出行路徑之類的事件,往往存在多個分支,分支的不同將決定程序的不同行為表現(xiàn)。在C語言中,存在著兩種選擇語句:(1)if語句。if語句主要應(yīng)用在判斷條件為一個區(qū)間,一般為兩個分支的程序選擇中。(2)switch語句。switch語句主要應(yīng)用在判別條件為具體值時,常用在具有多個分支的程序選擇中。上面兩個語句都是應(yīng)用選擇程序結(jié)構(gòu),后面章節(jié)將從簡單的開始,先介紹兩個選擇分支的if語句,再從雙分支程序進(jìn)行擴(kuò)展,介紹多個選擇分支的switch語句。3.1選擇結(jié)構(gòu)程序舉例【例3.1】從一元二次方程的求根計算過程,演示選擇程序如何解決實(shí)際問題。

要求:編程序求解一元二次方程的根,若無實(shí)根則打印說明。

分析:如果要求一元二次方程

的根,則需要判斷

的值,如果

則有實(shí)根,如果

則沒有實(shí)根,然后再根據(jù)求根公式進(jìn)行計算。

算法流程:(1)獲得鍵盤輸入,得到三個系數(shù)a,b,c;(2)計算判斷條件

,若判斷條件

,跳轉(zhuǎn)到步驟(3),若判斷條件

,跳轉(zhuǎn)到步驟(4);(3)打印該二元一次方程沒有實(shí)根;(4)進(jìn)行求根公式計算,輸出一元二次方程的實(shí)根。3.1選擇結(jié)構(gòu)程序舉例編寫程序:3.2選擇結(jié)構(gòu)和條件判斷一個選擇結(jié)構(gòu)將伴隨著多個分支,這些分支代表著程序的執(zhí)行在不同條件下表現(xiàn)出不同的行為。假設(shè)一個程序需要輸出一個數(shù)的絕對值,可以得到如下的算法步驟。步驟一:從程序外輸入整數(shù)X步驟二:判斷輸入的整數(shù)X是否小于0若小于0執(zhí)行步驟三否則執(zhí)行步驟四步驟三:返回-X步驟四:返回X3.2選擇結(jié)構(gòu)和條件判斷代碼實(shí)現(xiàn):3.2選擇結(jié)構(gòu)和條件判斷如上代碼所示,條件判斷對應(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)用與程序流程圖:簡化的if語句if-else雙分支語句if-else-if雙分支語句3.3.2簡單的if結(jié)構(gòu)if語句的最簡單形式 if(表達(dá)式)語句1【例3.3】考試分?jǐn)?shù)低于60分為不及格(條件為分?jǐn)?shù)大?。?.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ù)大小)這是一個擁有多重判斷條件的問題,思路分析如下:(1)對于分?jǐn)?shù)的評價是與分?jǐn)?shù)的區(qū)間有關(guān)(2)分?jǐn)?shù)區(qū)間的邊界為具體的某個整數(shù)(3)分?jǐn)?shù)區(qū)間具有左關(guān)右開的特征,具體為:[0,60),[60,70),[70,80),[80,100]根據(jù)上面的三點(diǎn),可以理清程序的二分設(shè)計思路步驟一:選擇某個數(shù)值進(jìn)行判斷步驟二:將這個數(shù)值左邊的視為某一個評價區(qū)間,右邊的為多個區(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元/公斤(條件為行李重量)

會員托運(yùn)消費(fèi)打八折(條件為會員身份)定義算法步驟:步驟一:獲得用戶輸入的行李重量,保存在整型變量weight中步驟二:創(chuàng)建運(yùn)費(fèi)計量變量money,使用整型類型聲明步驟三:創(chuàng)建會員身份標(biāo)識vip,使用整形類型聲明(1為會員,0不為會員)步驟四:獲取用戶輸入行李重量以及會員身份標(biāo)識步驟五:判斷weight是否高于20,若為否執(zhí)行步驟六,否則執(zhí)行步驟十一步驟六:判斷(weight-20)是否高于20,若為是,執(zhí)行步驟七,否則執(zhí)行步驟八步驟七:計算20與1.5的乘積加上(weight-40)與2的乘積并將結(jié)果賦值給money步驟八:計算(weight-20)與1.5的乘積并將結(jié)果賦值給money步驟九:判斷vip值是否等于1,是執(zhí)行步驟十,否則執(zhí)行步驟十一步驟十:計算money與0.8的乘積并將結(jié)果賦值給money步驟十一:打印所需要的運(yùn)費(fèi)

3.4.2if語句的嵌套應(yīng)用編寫代碼:

3.4.2if語句的嵌套應(yīng)用針對上面的結(jié)果做簡單的驗(yàn)證,由于是vip會員身份,可以得到下列的計算公式代入數(shù)值為

可以驗(yàn)算計算結(jié)果的正確性。

注意:在這里涉及到整型與浮點(diǎn)數(shù)的數(shù)據(jù)類型的轉(zhuǎn)換,在c語言中要聲明一個常量的數(shù)據(jù)類型可以在常量后面加上數(shù)據(jù)類型相關(guān)的縮寫,例如:2.f(單精度常量),123456789012345L(長整形常量)。同時if語句的嵌套特性決定了if語句可以進(jìn)行多重嵌套,但是在實(shí)際應(yīng)用場景中,應(yīng)該注意設(shè)計程序算法流程,在能夠使用if-else-if解決問題的時候,不建議使用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)每個case后面的常量必須互不相同,否則會出現(xiàn)矛盾的現(xiàn)象(同值不同的入口沖突)。(6)case標(biāo)號只起標(biāo)記作用,在執(zhí)行switch語句時,根據(jù)switch表達(dá)式的值找到入口,在執(zhí)行一個case語句后會順序執(zhí)行下去,直到遇到break語句跳出順序執(zhí)行。(7)在case語句中如果包含了一個以上的執(zhí)行語句,可不必加花括號,程序執(zhí)行的時候會順序執(zhí)行。當(dāng)然加花括號括起來也不會有影響。(8)多個case語句可以共用一個執(zhí)行語句,例如:case‘A’:case‘B’:case‘C’:b++;3.5.1多分支結(jié)構(gòu)一般形式使用switch應(yīng)注意以下問題:要注意以下幾點(diǎn)switch括號內(nèi)的“表達(dá)式”,應(yīng)該為整形(包括字符型)。(2)switch下面的花括號是一個復(fù)合語句。意味著包含若干語句,它是switch語句的語句體。語句體內(nèi)包括多個以關(guān)鍵字case開頭的語句行和一個以default開頭的語句行,case后面跟著一個常量或常量表達(dá)式,在表達(dá)式后面需要跟一個冒號。如case’A’:,case0:等。(3)switch語句執(zhí)行的時候,先計算括號內(nèi)表達(dá)的值,將這個值與case后面的常量作匹配,如果匹配成功,則進(jìn)入該case所表3.5.2多分支語句的實(shí)際應(yīng)用示的分支。(4)如果沒有與任何case后面的常量相匹配,則執(zhí)行default后面的(n+1)語句??梢詻]有default標(biāo)號及后面的(n+1)語句,此時如果沒有與任何case后面的常量相匹配,則不執(zhí)行任何語句。3.5.2多分支語句的實(shí)際應(yīng)用在前面的章節(jié)中曾經(jīng)用if語句介紹過成績分段評價的例子,以下程序的目的是輸入一個成績?nèi)缓笈袛嘣摮煽兊膮^(qū)間段位。由于成績的分段之間不存在層級的邏輯關(guān)系,同時分段為多段分段,可以采用多分支結(jié)構(gòu)來編程。if語句適合于區(qū)間分段,而switch只適合以點(diǎn)分段。但仔細(xì)觀察分?jǐn)?shù)分段的結(jié)構(gòu)[0,60),[60,70),[70,80),[80,100],會發(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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論