




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章程序的控制結(jié)構(gòu)第4章程序的控制結(jié)構(gòu)
通常計(jì)算機(jī)程序總是由若干條語(yǔ)句組成,從執(zhí)行方式上看,如果從第一條語(yǔ)句到最后一條語(yǔ)句完全按順序執(zhí)行,則是最簡(jiǎn)單的結(jié)構(gòu),順序結(jié)構(gòu);若在程序執(zhí)行的過程當(dāng)中,根據(jù)用某一條件的結(jié)果去執(zhí)行若干不同的任務(wù)則為選擇結(jié)構(gòu);如果在程序的某處,需要根據(jù)某項(xiàng)條件重復(fù)地執(zhí)行某項(xiàng)任務(wù)若干次或直到滿足或不滿足某個(gè)條件為止,這就構(gòu)成了循環(huán)結(jié)構(gòu)。大多數(shù)情況下,程序都不會(huì)是簡(jiǎn)單的只有順序結(jié)構(gòu),而是順序、選擇、循環(huán)三種結(jié)構(gòu)的復(fù)雜組合。本章重點(diǎn)介紹這三種結(jié)構(gòu)對(duì)應(yīng)的C語(yǔ)言語(yǔ)句的使用規(guī)則。4.1順序結(jié)構(gòu)4.2選擇結(jié)構(gòu)選擇結(jié)構(gòu)是根據(jù)條件的結(jié)構(gòu),有選擇的執(zhí)行相應(yīng)的程序段的一種程序結(jié)構(gòu),也稱為分支結(jié)構(gòu)。一般常用if語(yǔ)句和switch語(yǔ)句來完成。4.2.1
if語(yǔ)句(1)if(條件表達(dá)式)
語(yǔ)句A;功能:判斷表達(dá)式的值,值為“真”,則執(zhí)行語(yǔ)句A;否則不執(zhí)行語(yǔ)句。語(yǔ)法規(guī)則:if語(yǔ)句由三部分組成,if關(guān)鍵字、小括號(hào)及條件表達(dá)式和語(yǔ)句A。語(yǔ)句A默認(rèn)只能是一條語(yǔ)句,如果是多條語(yǔ)句需要將多條語(yǔ)句用{}括起來,構(gòu)成一條復(fù)合語(yǔ)句即可。這三部分組成一條if語(yǔ)句。注意:小括號(hào)括死后,沒有分號(hào)。4.2.1
if語(yǔ)句(1)
例如:當(dāng)x>y時(shí)輸出x的值,否則不輸出。if(x>y)printf("%d",x);這種if語(yǔ)句的執(zhí)行過程如下圖所示。4.2.1選擇結(jié)構(gòu)4.2.1
if語(yǔ)句(2)if(條件表達(dá)式)
語(yǔ)句A;else
語(yǔ)句B;功能:判斷表達(dá)式的值,值為“真”,則執(zhí)行語(yǔ)句A;值為“假”則執(zhí)行語(yǔ)句B。語(yǔ)法規(guī)則:if語(yǔ)句由五部分組成,if關(guān)鍵字、小括號(hào)及條件表達(dá)式、語(yǔ)句A、else關(guān)鍵字和語(yǔ)句B。語(yǔ)句A和語(yǔ)句B默認(rèn)只能是一條語(yǔ)句,如果是多條語(yǔ)句需要將多條語(yǔ)句用{}括起來,構(gòu)成一條復(fù)合語(yǔ)句即可。這五部分組成一條if-else語(yǔ)句。4.2.1
if語(yǔ)句(2)
例如:判斷整數(shù)a是偶數(shù)還是奇數(shù)。if(a%2==0)printf("a為偶數(shù)");elseprintf("a為奇數(shù)");這種if語(yǔ)句的執(zhí)行過程如下圖所示。4.2.1
if語(yǔ)句4.2.1
if語(yǔ)句(3)既然if語(yǔ)句或者if-else語(yǔ)句,都是一條語(yǔ)句,那么如果if語(yǔ)句組成中的“語(yǔ)句A”,或者if-else語(yǔ)句組成中的“語(yǔ)句A”或“語(yǔ)句B”能否也是一條if語(yǔ)句或者if-else語(yǔ)句?當(dāng)然可以!這種if語(yǔ)句中再包含if語(yǔ)句的結(jié)構(gòu),稱為if語(yǔ)句的嵌套。嵌套的形式多樣,例如以下形式都是嵌套的形式,不同的只是嵌套的位置不同。if(表達(dá)式1)if(表達(dá)式2)
語(yǔ)句1;else
語(yǔ)句2;elseif(表達(dá)式3)
語(yǔ)句3;else
語(yǔ)句4;if(表達(dá)式1)if(表達(dá)式2)
語(yǔ)句1;else
語(yǔ)句2;
if(表達(dá)式1)
語(yǔ)句A;elseif(表達(dá)式2)
語(yǔ)句3;else
語(yǔ)句4;if(表達(dá)式1)if(表達(dá)式2)
語(yǔ)句1;else
語(yǔ)句2;else
語(yǔ)句B;4.2.1
if語(yǔ)句4.2.1
if語(yǔ)句if語(yǔ)句的嵌套,需要注意的重點(diǎn)就是if和else的配對(duì)關(guān)系,如果配對(duì)關(guān)系弄錯(cuò),將會(huì)導(dǎo)致分支的流程錯(cuò)誤。有一個(gè)基本原則,就是else始終與其上面最近的if是一對(duì)。4.2.1
if語(yǔ)句if語(yǔ)句的嵌套,層次不易過多,一般以2~3層較為合適,層次多會(huì)影響程序的可讀性,會(huì)對(duì)以后程序的糾錯(cuò)帶來困難。為了使if語(yǔ)句嵌套的結(jié)構(gòu)有較好的可讀性,通常會(huì)使用下面這種結(jié)構(gòu)的嵌套: if(表達(dá)式A)
語(yǔ)句A; elseif(表達(dá)式B)
語(yǔ)句B; elseif(表達(dá)式C)
語(yǔ)句C;
.
.
. elseif(表達(dá)式m)
語(yǔ)句m; else
語(yǔ)句n;4.2.1
if語(yǔ)句例如:判斷正整數(shù)data為幾位數(shù)。if(data>=1000) printf("data至少為4位數(shù)");elseif(data>=100) printf("data為3位數(shù)");elseif(data>=10) printf("data為2位數(shù)");else printf("data為1位數(shù)");4.2.1
if語(yǔ)句4.2.1
if語(yǔ)句(1)三種形式的if語(yǔ)句中在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或者關(guān)系表達(dá)式。在執(zhí)行if語(yǔ)句時(shí)先對(duì)表達(dá)式求解,若表達(dá)式的值為0,按“假”處理,若表達(dá)式的值為非0,按“真”處理,執(zhí)行指定的語(yǔ)句。其實(shí)表達(dá)式的類型不限于邏輯表達(dá)式或者關(guān)系表達(dá)式,可以是任意的能得到“真”或“假”的結(jié)果的表達(dá)式(包括整型、浮點(diǎn)型、字符型、指針類型數(shù)據(jù))。(2)第二、第三種形式的if語(yǔ)句中,注意每個(gè)語(yǔ)句后都有一個(gè)分號(hào),這是由于分號(hào)是C語(yǔ)言中不可缺少的部分,是if語(yǔ)句中的內(nèi)嵌語(yǔ)句所要求的。如果無(wú)此分號(hào),則出現(xiàn)語(yǔ)法錯(cuò)誤。else子句不能作為語(yǔ)句單獨(dú)使用,它必須是if語(yǔ)句的一部分,與if配對(duì)使用。(3)在if和else后面的語(yǔ)句只能是一條語(yǔ)句(如上例),若有多條操作語(yǔ)句,此時(shí)必須用花括號(hào)“{}”將幾個(gè)語(yǔ)句括起來作為一條復(fù)合語(yǔ)句。4.2.2條件運(yùn)算符條件運(yùn)算符是一種特殊的運(yùn)算符,由于它的執(zhí)行過程與if-else語(yǔ)句類似,因此可以替代簡(jiǎn)單的if語(yǔ)句。條件運(yùn)算符要求有三個(gè)操作對(duì)象,為三目(元)運(yùn)算符,它是C語(yǔ)言中唯一的一個(gè)三目運(yùn)算符。條件運(yùn)算符表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3功能:若表達(dá)式1的結(jié)果為真,則條件運(yùn)算符表達(dá)式的結(jié)果為表達(dá)式2的結(jié)果,否則為表達(dá)式3的結(jié)果。4.2.2條件運(yùn)算符語(yǔ)法規(guī)則:(1)條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式1,若非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若0(假)則求解表達(dá)式3,此時(shí)表達(dá)式3的值就作為整個(gè)條件表達(dá)式的值。(2)條件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆?。如果有以下條件表達(dá)式:a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)如果a=1,b=2,c=3,d=4,則條件表達(dá)式的值等于4。(3)條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3的類型不同。4.2.2條件運(yùn)算符4.2.3
switch語(yǔ)句switch語(yǔ)句是多分支選擇語(yǔ)句。用來實(shí)現(xiàn)圖4.12表示的多分支選擇結(jié)構(gòu)。if語(yǔ)句較擅長(zhǎng)解決二分支結(jié)構(gòu),而實(shí)際問題中常常需要用到多分支的選擇。例如,學(xué)生的成績(jī)分類(90分以上為‘A’,80-89分為‘B’,70-79分為‘C’,等……);人的分類(按年齡所在年代分為70后、80后、90后、00后等等);汽車價(jià)格分類…….。表達(dá)式的值若與某一分支常量表達(dá)式值相等語(yǔ)句組1語(yǔ)句組2語(yǔ)句組n語(yǔ)句組n+1……常量表達(dá)式1default常量表達(dá)式2常量表達(dá)式n4.3
switch語(yǔ)句switch語(yǔ)句的一般形式如下:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;case常量表達(dá)式2:語(yǔ)句組2; . . .case常量表達(dá)式n:語(yǔ)句組n;default:語(yǔ)句組n+1;}功能:多分支選擇結(jié)構(gòu)。用case關(guān)鍵字表示每一個(gè)分支。4.3
switch語(yǔ)句switch語(yǔ)句的一般形式如下:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;case常量表達(dá)式2:語(yǔ)句組2; . . .case常量表達(dá)式n:語(yǔ)句組n;default:語(yǔ)句組n+1;}功能:多分支選擇結(jié)構(gòu)。用case關(guān)鍵字表示每一個(gè)分支。4.3
switch語(yǔ)句語(yǔ)法規(guī)則:①switch后面括號(hào)內(nèi)的“表達(dá)式”的結(jié)果,只能是整形或者字符型。②
“case常量表達(dá)式”起語(yǔ)句標(biāo)號(hào)作用,當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句組,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語(yǔ)句組。這里各個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。語(yǔ)句組可以是一條語(yǔ)句,也可以是多條語(yǔ)句,并且多條語(yǔ)句不用構(gòu)成復(fù)合語(yǔ)句。③
每一個(gè)case的常量表達(dá)式的值必須互不相同。④
在switch語(yǔ)句中,“case常量表達(dá)式”只相當(dāng)于一個(gè)語(yǔ)句標(biāo)號(hào),表達(dá)式的值和某標(biāo)號(hào)相等則轉(zhuǎn)向該標(biāo)號(hào)執(zhí)行對(duì)應(yīng)的語(yǔ)句組,但不能在執(zhí)行完該標(biāo)號(hào)的語(yǔ)句組后自動(dòng)跳出整個(gè)switch語(yǔ)句,所以會(huì)出現(xiàn)繼續(xù)執(zhí)行所有后面case語(yǔ)句的情況。這是與前面介紹的if語(yǔ)句完全不同的,應(yīng)特別注意。4.2.3
switch語(yǔ)句⑤
多個(gè)case可以共用一組執(zhí)行語(yǔ)句,如:switch(s){case5:case4:case3:printf(“Pass\n”);break;}當(dāng)s的值為5,4,3時(shí),都執(zhí)行同一組語(yǔ)句。⑥defalut語(yǔ)句可以省略;⑦switch語(yǔ)句可以嵌套使用,需要注意的是,嵌套使用時(shí),在switch語(yǔ)句中出現(xiàn)的break,它只能結(jié)束本層的switch,請(qǐng)仔細(xì)分析下例。
4.2.3
switch語(yǔ)句4.3循環(huán)結(jié)構(gòu)實(shí)際問題中會(huì)出現(xiàn)很多需要重復(fù)處理的工作,例如統(tǒng)計(jì)30個(gè)學(xué)生4門課的個(gè)人平均成績(jī)和課程平均成績(jī),需要將所有學(xué)生的成績(jī)累加起來,再除以相應(yīng)的數(shù),最后得到想要的結(jié)果。寫程序的時(shí)候,不可能重復(fù)很多次寫相同的程序段,這就需要用循環(huán)結(jié)構(gòu)來解決。循環(huán)結(jié)構(gòu)是用來解決重復(fù)的、有規(guī)律的工作的一種程序設(shè)計(jì)結(jié)構(gòu)。在C語(yǔ)言中,主要提供有while語(yǔ)句、do…while語(yǔ)句、for語(yǔ)句來實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。4.3.1while語(yǔ)句while語(yǔ)句的一般格式是:while(表達(dá)式)
循環(huán)體語(yǔ)句;其特點(diǎn)是先判斷表達(dá)式,后執(zhí)行循環(huán)體。while語(yǔ)句的執(zhí)行過程如圖所示。功能:先判斷表達(dá)式值的真假,若為真(非零)時(shí),就執(zhí)行循環(huán)體語(yǔ)言;否則,退出循環(huán)結(jié)構(gòu)。4.3.1while語(yǔ)句語(yǔ)法規(guī)則:①
表達(dá)式是循環(huán)條件,根據(jù)表達(dá)式返回的邏輯值是真是假來判斷條件是否成立,決定循環(huán)體執(zhí)行的次數(shù),因此循環(huán)體有可能一次也不執(zhí)行;循環(huán)體如果有多條語(yǔ)句,一定要用“{}”括號(hào)括起來構(gòu)成一條符合語(yǔ)句;②
條件表達(dá)式不成立(為0),或循環(huán)體內(nèi)遇break,return,goto等語(yǔ)句,將退出while循環(huán);③
循環(huán)有一種特殊情況,就是循環(huán)無(wú)休止地進(jìn)行,稱為無(wú)限循環(huán)。有的時(shí)候編程有特殊需要,要進(jìn)行無(wú)限循環(huán),可以采用下面形式:
while(1)循環(huán)體;4.3.1while語(yǔ)句4.3.1while語(yǔ)句4.3.1while語(yǔ)句4.3.2
do-while語(yǔ)句do-while語(yǔ)句的一般格式為:do
循環(huán)體語(yǔ)句;while(表達(dá)式);其特點(diǎn)是先執(zhí)行循環(huán)體,后判斷表達(dá)式。do-while語(yǔ)句的執(zhí)行過程如圖4.18所示。4.3.2
do-while語(yǔ)句語(yǔ)法規(guī)則:①
先執(zhí)行一次循環(huán)體語(yǔ)句,再判斷表達(dá)式的結(jié)果,若結(jié)果為真,繼續(xù)再次執(zhí)行循環(huán)體語(yǔ)句;若表達(dá)式結(jié)果為假,則停止循環(huán)的執(zhí)行;因其特點(diǎn)是先執(zhí)行循環(huán)體,后判斷表達(dá)式,因此循環(huán)體至少要執(zhí)行一次。②do-while語(yǔ)句最后的分號(hào)不能漏掉;③
循環(huán)體如果有多條語(yǔ)句,一定要用“{}”括號(hào)括起來構(gòu)成一條符合語(yǔ)句。4.3.3
for語(yǔ)句for語(yǔ)句的一般形式為:for([表達(dá)式1];[表達(dá)式2];[表達(dá)式3])
循環(huán)體語(yǔ)句;功能:與while或do-while的功能一樣,同為循環(huán)語(yǔ)句。4.3.3
for語(yǔ)句語(yǔ)法規(guī)則:①
一條for語(yǔ)句由關(guān)鍵字for、小括號(hào)和其中的三個(gè)表達(dá)式、循環(huán)體語(yǔ)句三部分組成;②
表達(dá)式1通常為變量賦初值的表達(dá)式,表達(dá)式2為循環(huán)的條件,表達(dá)式3通常是能使循環(huán)條件趨向終止的表達(dá)式;例如:for(i=1;i<=10;i++)printf("%d",i);③
這3個(gè)表達(dá)式之間用分號(hào)分隔,值可以為任意類型,而且可以省略,但是2個(gè)分號(hào)不可省略,例如可以寫成:for(;;);表示的是無(wú)限循環(huán),而且循環(huán)體為空語(yǔ)句。4.3.3
for語(yǔ)句④
執(zhí)行的流程:首先執(zhí)行表達(dá)式1,接著判斷表達(dá)式2的值是否為真,如果為真,則繼續(xù)執(zhí)行循環(huán)體語(yǔ)句,然后執(zhí)行表達(dá)式3,到此一次循環(huán)執(zhí)行完畢。執(zhí)行下一次循環(huán)時(shí),則從判斷表達(dá)式2的值開始,以此類推,循環(huán)下去。其執(zhí)行過程如圖4.19所示;
⑤
循環(huán)體如果有多條語(yǔ)句,一定要用“{}”括號(hào)括起來構(gòu)成一條符合語(yǔ)句。4.3.3
for
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 口碑營(yíng)銷案例解析考核試卷
- 智能儀表在智能電網(wǎng)分布式能源管理中的應(yīng)用考核試卷
- 浙江省寧波市2024-2025學(xué)年八年級(jí)上學(xué)期期中模擬考試數(shù)學(xué)試卷(含答案)
- 江西省鷹潭市第九中學(xué)2024-2025學(xué)年九年級(jí)下學(xué)期期末考試語(yǔ)文試卷(含答案)
- 安理工選礦學(xué)教案第1章 重力選礦概論
- 廣東省深圳市龍華區(qū)高峰學(xué)校2023-2024學(xué)年九年級(jí)上學(xué)期10月月考數(shù)學(xué)試卷(含答案)
- 小學(xué)三年級(jí)語(yǔ)文詞語(yǔ)搭配練習(xí)題
- 小學(xué)數(shù)學(xué)五年級(jí)強(qiáng)化訓(xùn)練計(jì)算題
- 山東省濟(jì)南市鋼城區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期中道德與法治試題(解析版)
- 蘇教版五年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí):填空題
- 流水走賬協(xié)議合同
- 《智慧化稅費(fèi)申報(bào)與管理》課件-項(xiàng)目三 消費(fèi)稅的計(jì)算與申報(bào)
- TAGFA 0012-2024 綠色食品 茶葉種植技術(shù)規(guī)范
- 2025年磨工職業(yè)技能競(jìng)賽參考試指導(dǎo)題庫(kù)500題(含答案)
- 早產(chǎn)兒經(jīng)口喂養(yǎng)臨床實(shí)踐專家共識(shí)(2025)解讀課件
- 工業(yè)廢水污水處理廠運(yùn)營(yíng)維護(hù)方案書
- 工會(huì)考試試題題庫(kù)及答案解析-工會(huì)考試試題題庫(kù)
- 2025年發(fā)展對(duì)象考試題庫(kù)附含答案
- 天書奇譚美術(shù)課課件
- 老年病的特點(diǎn)及診療要點(diǎn)
- JJG 225-2024熱量表檢定規(guī)程
評(píng)論
0/150
提交評(píng)論