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

下載本文檔

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

文檔簡(jiǎn)介

教學(xué)要點(diǎn)與重點(diǎn)教學(xué)要點(diǎn):本章主要介紹選擇結(jié)構(gòu)程序設(shè)計(jì)的作用和意義。教學(xué)重點(diǎn):掌握選擇結(jié)構(gòu)分支條件的設(shè)計(jì)與應(yīng)用。第四章選擇結(jié)構(gòu)程序設(shè)計(jì)

選擇結(jié)構(gòu)是程序的3種基本結(jié)構(gòu)之一。在C語(yǔ)言中,通常使用if語(yǔ)句或switch語(yǔ)句來(lái)實(shí)現(xiàn)選擇結(jié)構(gòu)程序設(shè)計(jì)。4.1if語(yǔ)句C語(yǔ)言提供了三種格式的if語(yǔ)句。它們分別是:?jiǎn)畏种f語(yǔ)句、雙分支if語(yǔ)句和多分支if語(yǔ)句。4.1.1單分支if語(yǔ)句基本格式為:if(表達(dá)式)語(yǔ)句;說(shuō)明:①“表達(dá)式”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。例如:“if(a=8)語(yǔ)句;”、“if(b)語(yǔ)句;”都是允許的,只要表達(dá)式的值為非0,即為“真”。通常把關(guān)系表達(dá)式或邏輯表達(dá)式的值為真時(shí),稱為條件滿足。②語(yǔ)句是“條件”滿足時(shí),處理方法的描述,可以是若干個(gè)語(yǔ)句。

單分支if語(yǔ)句執(zhí)行流程:首先判斷表達(dá)式的值是否為真,若表達(dá)式的值為真(非0),則執(zhí)行其后的語(yǔ)句;否則不執(zhí)行該語(yǔ)句。語(yǔ)句的控制流程如圖4-1所示。圖4-1單分支if語(yǔ)句執(zhí)行流程實(shí)例:【例4.1】輸入兩個(gè)整數(shù)a和b,如果a小于b,則把整數(shù)a打印出來(lái)?!纠?.2】文字大小寫轉(zhuǎn)換。輸入一個(gè)字符,判別它的大小寫狀態(tài),如果是小寫,則將它轉(zhuǎn)換成大寫字母,然后輸出轉(zhuǎn)換后的字符。4.1.1單分支if語(yǔ)句4.1.2雙分支if語(yǔ)句雙分支if語(yǔ)句為if-else形式,基本格式為:

if(表達(dá)式)

語(yǔ)句塊1;

else

語(yǔ)句塊2;說(shuō)明:①“表達(dá)式”一般為關(guān)系表達(dá)式或邏輯表達(dá)式。通常把關(guān)系表達(dá)式或邏輯表達(dá)式的值為真時(shí),稱為條件滿足;值為假時(shí),稱為條件不滿足。反之亦然。②語(yǔ)句塊1、語(yǔ)句塊2分別是“條件”滿足或不滿足時(shí),處理方法的描述,可以是若干個(gè)語(yǔ)句。

雙分支if語(yǔ)句的控制流程:雙分支if語(yǔ)句在程序的執(zhí)行過(guò)程中,首先判斷“條件”,其值為真(非0)時(shí),執(zhí)行語(yǔ)句塊1;為假(0)時(shí)執(zhí)行語(yǔ)句塊2。執(zhí)行完語(yǔ)句塊1或語(yǔ)句塊2之后,接下來(lái)執(zhí)行if后面的語(yǔ)句。語(yǔ)句的控制流程如圖4-2所示。圖4-2雙分支if語(yǔ)句執(zhí)行流程【例4.3】從鍵盤輸入一個(gè)整數(shù),判斷這個(gè)數(shù)的是否大于0。4.1.2雙分支if語(yǔ)句4.1.3多分支if語(yǔ)句基本格式為:if(表達(dá)式1)語(yǔ)句塊1;elseif(表達(dá)式2)語(yǔ)句塊2;;

……elseif(表達(dá)式m)語(yǔ)句塊n;else語(yǔ)句塊n+1;說(shuō)明:①多分支if語(yǔ)句依次判斷表達(dá)式的值,當(dāng)某個(gè)表達(dá)式的值為真(非0)時(shí),則執(zhí)行其下面的語(yǔ)句,然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。②如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n+1;如果所列出的條件都不滿足,又沒(méi)有else子句,則跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序,不執(zhí)行任何多分支if語(yǔ)句內(nèi)的語(yǔ)句。

多分支if語(yǔ)句的控制流程:多分支if語(yǔ)句在程序的執(zhí)行過(guò)程中,首先判斷條件“表達(dá)式1”,其值為真(非0)時(shí),執(zhí)行語(yǔ)句塊1;為假(0)時(shí)進(jìn)一判斷條件“表達(dá)式2”,其值為真執(zhí)行語(yǔ)句塊2,依次類推,到達(dá)判斷條件“表達(dá)式n”,其值為真時(shí),執(zhí)行語(yǔ)句塊n,為假時(shí),執(zhí)行語(yǔ)句塊n+1。接下來(lái)執(zhí)行if后面的語(yǔ)句。語(yǔ)句的控制流程如圖4-3所示。圖4-3多分支if語(yǔ)句執(zhí)行流程4.1.4if語(yǔ)句的嵌套當(dāng)if語(yǔ)句中的語(yǔ)句又是if語(yǔ)句時(shí),這種情況就稱為if語(yǔ)句的嵌套。if語(yǔ)句的嵌套的基本格式為:if(表達(dá)式) if(表達(dá)式)語(yǔ)句塊1; else語(yǔ)句塊2;else f(表達(dá)式)語(yǔ)句塊3; else語(yǔ)句塊4;如果嵌套的if語(yǔ)句是if-else形式,將會(huì)出現(xiàn)多個(gè)if和else的情況,要特別注意if和else的配對(duì)問(wèn)題。例如:if(表達(dá)式)if(表達(dá)式)語(yǔ)句塊1;elseif(表達(dá)式)語(yǔ)句塊2;else語(yǔ)句塊3;說(shuō)明:在這段程序中,有三個(gè)if,兩個(gè)else,其中的每個(gè)else和if的配對(duì)關(guān)系是什么?從程序的書寫格式來(lái)看,是希望第一個(gè)出現(xiàn)的else能和第一個(gè)出現(xiàn)的if配對(duì),但實(shí)際上這個(gè)else是與第二個(gè)if配對(duì)的。

4.1.4if語(yǔ)句的嵌套C語(yǔ)言規(guī)定:else總是與它前面最近的一個(gè)沒(méi)有配對(duì)的if配對(duì)。如何實(shí)現(xiàn)上個(gè)實(shí)例中第一個(gè)else和第一個(gè)if配對(duì)呢?可以利用加花括號(hào){}的方法來(lái)改變?cè)瓉?lái)的配對(duì)關(guān)系。例如:

if(表達(dá)式) {if(表達(dá)式)語(yǔ)句塊1;} else if(表達(dá)式)語(yǔ)句塊2; else語(yǔ)句塊3;

這樣,{}就限定了內(nèi)嵌if語(yǔ)句的范圍,就實(shí)現(xiàn)了第一個(gè)出現(xiàn)的else和第一個(gè)出現(xiàn)的if配對(duì)。【例4.5】寫出下面程序的運(yùn)行結(jié)果【例4.6】輸入兩個(gè)整數(shù)x,y,z,輸出其中最大的數(shù)。

4.1.5條件運(yùn)算符和條件表達(dá)式(1)條件運(yùn)算符條件運(yùn)算符是C語(yǔ)言中一個(gè)特殊的運(yùn)算符,由“?”和“:”組合而成。條件運(yùn)算符是三目運(yùn)算符,要求有3個(gè)操作對(duì)象,并且三個(gè)操作對(duì)象都是表達(dá)式。在條件語(yǔ)句中,若只執(zhí)行單個(gè)賦值語(yǔ)句,常使用條件運(yùn)算來(lái)表示。這樣既會(huì)使程序簡(jiǎn)潔,又可以提高了運(yùn)行效率。例如:

if(x>y)max=x;elsemax=y;

用條件運(yùn)算可以表示為:

max=(x>y)?x:y;

執(zhí)行時(shí),先計(jì)算(x>y)的值為真還是假,若為真,則表達(dá)式取值為x;否則取值為y。(2)條件表達(dá)式其一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3

條件運(yùn)算的求值規(guī)則為:計(jì)算表達(dá)式1的值,若表達(dá)式1的值為真,則以表達(dá)式2的值作為整個(gè)條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。例如:max=(x>y)?x:y;①優(yōu)先級(jí)條件運(yùn)算符的運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,高于賦值符。因此,表達(dá)式max=(x>y)?x:y可以去掉括號(hào),寫為max=x>y?x:y,執(zhí)行時(shí)意義是相同的。②結(jié)合性條件運(yùn)算符的結(jié)合方向是自右至左。例如:x>y?m:z>m?z:d等價(jià)于x>y?x:(z>m?z:m)③條件表達(dá)式中,表達(dá)式1通常為關(guān)系或邏輯表達(dá)式,表達(dá)式2、3的類型可以是數(shù)值表達(dá)式、賦值表達(dá)式、函數(shù)表達(dá)式或條件表達(dá)式。4.1.5條件運(yùn)算符和條件表達(dá)式4.2switch語(yǔ)句當(dāng)對(duì)一個(gè)表達(dá)式的不同取值情況作不同處理時(shí),用多分支if語(yǔ)句的程序結(jié)構(gòu)顯得較為雜亂,而用switch語(yǔ)句將使程序的結(jié)構(gòu)更清晰,C語(yǔ)言提供了專門用于解決多分支選擇問(wèn)題的switch語(yǔ)句,用來(lái)實(shí)現(xiàn)多種情況選擇的程序設(shè)計(jì)。4.2.1switch語(yǔ)句基本格式為:

switch(表達(dá)式) { case常量表達(dá)式1:語(yǔ)句塊1; case常量表達(dá)式2:語(yǔ)句塊2; …… case常量表達(dá)式n:語(yǔ)句塊n; default:語(yǔ)句塊n+1; }4.2switch語(yǔ)句說(shuō)明:①“表達(dá)式”一般為整型變量或者字符型變量,case后面的只能是常量表達(dá)式。②switch語(yǔ)句的執(zhí)行過(guò)程是:先求“表達(dá)式”的值,并逐個(gè)與其后的常量表達(dá)式值相比較。當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語(yǔ)句塊,在case后,允許有多個(gè)語(yǔ)句,可以不用{}括起來(lái)。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句。③case與其后面的常量表達(dá)式合稱為case語(yǔ)句標(biāo)號(hào),每個(gè)case后的各常量表達(dá)式的值必須互不相同,否則會(huì)導(dǎo)致錯(cuò)誤。④在關(guān)鍵字case和常量表達(dá)式之間一定要有空格,switch后面的括號(hào)不能省略。各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。⑤多個(gè)case可以共用一組執(zhí)行語(yǔ)句。例如:case'A':case'B': case'C':printf(">60\n");break;4.2.2switch語(yǔ)句的嵌套

switch語(yǔ)句也可以嵌套,但一般較少使用。在switch語(yǔ)句中,“case常量表達(dá)式”只起語(yǔ)句標(biāo)號(hào)的作用,并不進(jìn)行條件判斷。當(dāng)執(zhí)行switch語(yǔ)句后,程序會(huì)根據(jù)case后面表達(dá)式的值找到匹配的入口標(biāo)號(hào),并從此處開(kāi)始執(zhí)行,不再進(jìn)行判斷。為了避免這種情況,C語(yǔ)言提供了break語(yǔ)句,專門用于跳出switch語(yǔ)句,break語(yǔ)句只有關(guān)鍵字break,沒(méi)有參數(shù)。break語(yǔ)句不但可以用在switch語(yǔ)句中終止switch語(yǔ)句的執(zhí)行,也可以用在循環(huán)中終止循環(huán),要格外注意break在這里的作用。

switch語(yǔ)句實(shí)例:

【例4.7】生肖程序設(shè)計(jì),用戶輸入出生年份,根據(jù)輸入的年份來(lái)確定用戶的屬相,把結(jié)果打印出來(lái)。

【例4.8】設(shè)計(jì)程序,實(shí)現(xiàn)季節(jié)判斷,用戶輸入1、2、3月是春季,4、

5、6月是夏季,7、8、9月是秋季,10、11、12是冬季。

【例4-9】輸入平年的一個(gè)月份,輸出這個(gè)月的天數(shù)。4.2switch語(yǔ)句4.3選擇結(jié)構(gòu)程序設(shè)計(jì)舉例【例4.10】設(shè)計(jì)C語(yǔ)言程序,由鍵盤輸入任意3個(gè)數(shù),計(jì)算以這3個(gè)數(shù)為邊長(zhǎng)的三角形的面積。算法分析如下:設(shè)3個(gè)邊為a,b,c,(1)查看輸入的3個(gè)數(shù)能否組成三角形(2)計(jì)算三角形的面積【例4.12】某市規(guī)定如下用水收費(fèi)標(biāo)準(zhǔn):每戶一月用水不超過(guò)6立方米時(shí),水費(fèi)按“基準(zhǔn)費(fèi)”收,每立方米2.4元;超過(guò)6立方米時(shí),未超過(guò)部分按“基準(zhǔn)費(fèi)”收,超過(guò)部分按“調(diào)水價(jià)”收,每立方米6元。根據(jù)用戶用水量,求用戶的水費(fèi)。【例4.13】一個(gè)數(shù)如果恰好等于除它本身外的因子和,那么這個(gè)數(shù)就稱為“完數(shù)”,編寫程序,求1000之內(nèi)的完數(shù)?!纠?.11】求一元二次方程的根。按照公式:s=(a+b+c)*0.5area=sqrt(s*(s-a)*(s-b)*(s-c))(面積公式)任務(wù)4.4.1計(jì)算個(gè)人所得稅?!締?wèn)題描述】

輸入個(gè)人工資計(jì)算個(gè)人所得稅。根據(jù)新的個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論