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

下載本文檔

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

文檔簡介

1、 The C Programming Language Chapter 5 Control Flow1第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)的作用是根據(jù)給定的條件來決選擇結(jié)構(gòu)的作用是根據(jù)給定的條件來決定做什么的操作。定做什么的操作。if語句語句if-else語句語句if-else if-else語句語句shbeking hd8go hd88go oemgc 189288 hzp580 yjoem oemdg xcdnpx oemdg zhongtezc yanjigzzg-nsk skf-zr ygcooper skf-zt nsk-zt fag-zt zhongtezc ntn-zt 189286

2、 xcdnpx dgxcdn dgxcpx xcwxpx xunchi-px 0759mz lczx188 The C Programming Language Chapter 5 Control Flow24.1.1 if語句的形式語句的形式單if語句 其一般形式為: if (表達(dá)式) 語句表達(dá)式語句假真系統(tǒng)首先對表達(dá)式求解,當(dāng)結(jié)果為系統(tǒng)首先對表達(dá)式求解,當(dāng)結(jié)果為“真真”(非(非0時,則執(zhí)行指定時,則執(zhí)行指定的語句;否則跳過指定語句,接著執(zhí)行的語句;否則跳過指定語句,接著執(zhí)行if語句的下一語句。語句的下一語句。 4.1 if語句語句 The C Programming Language Ch

3、apter 5 Control Flow3例例4.1 求兩個整數(shù)中較大者。求兩個整數(shù)中較大者。 分析:分析: 可設(shè)三個變量a,b,max。首先假設(shè)max=a,然后判斷max和b,若maxb,則max=b,最后輸出max。 #include stdio.hvoid main() int a,b,max; printf(請輸入a,b的值n); scanf(%d,%d,&a,&b); max=a; if(maxb) printf(max=%dn,a); else printf(max=%dn,b); The C Programming Language Chapter 5 Contr

4、ol Flow6if-else if-else語句 其一般形式為:if (表達(dá)式1) 語句1else if (表達(dá)式2) 語句2 else if (表達(dá)式3) 語句3 else if (表達(dá)式n-1) 語句n-1 else 語句n假真表達(dá)式n-1表達(dá)式1假真表達(dá)式2假真假真語句1語句2語句3語句n-1語句n表達(dá)式3系統(tǒng)首先求解表達(dá)式系統(tǒng)首先求解表達(dá)式1的值,當(dāng)其值為的值,當(dāng)其值為“真真”(非(非0時,執(zhí)行語句時,執(zhí)行語句1,然后跳出,然后跳出該選擇結(jié)構(gòu);否則求解表達(dá)式該選擇結(jié)構(gòu);否則求解表達(dá)式2的值,當(dāng)其值為的值,當(dāng)其值為“真真”(非(非0時,則執(zhí)行語句時,則執(zhí)行語句2,然后跳出該選擇結(jié)構(gòu);否

5、則再繼續(xù)求解表達(dá)式然后跳出該選擇結(jié)構(gòu);否則再繼續(xù)求解表達(dá)式3,當(dāng)其值為,當(dāng)其值為“真真”(非(非0時,時,執(zhí)行語句執(zhí)行語句3,然后跳出該選擇結(jié)構(gòu);否則接著進(jìn)行判斷,依次類推。如果經(jīng)過,然后跳出該選擇結(jié)構(gòu);否則接著進(jìn)行判斷,依次類推。如果經(jīng)過求解,所有的表達(dá)式都為求解,所有的表達(dá)式都為“假假”(0),就執(zhí)行最后一個),就執(zhí)行最后一個else部分的語句部分的語句n,從而,從而結(jié)束整個結(jié)束整個if語句。語句。 The C Programming Language Chapter 5 Control Flow7例例4.3 給出百分制的成績,要求輸出成績等級給出百分制的成績,要求輸出成績等級A、B、C、

6、D、E。90分以上為分以上為A,8089分為分為B,7079分為分為C,6069分為分為D,60分以下為分以下為E。 分析:分析: 設(shè)成績?yōu)閟core,假設(shè)取值在0100之間,沒有錯誤的輸入,則有:0score60 E60score69 D70score79 C80score89 B90score100 A #include stdio.hvoid main() int score; printf(請輸入學(xué)生的成績n); scanf(%d,&score); if(score=0&score=60&score=70&score=80&score=0&

7、; score60) printf(grade is En); else if(score=69) printf(grade is Dn); else if(score=79) printf(grade is Cn); else if(score=0 & score60) printf(grade is En); else if(score=79) printf(grade is Cn); else if(score=89) printf(grade is Bn); else if(scoreb) a+; b+;else a=0; b=10; The C Programming Lan

8、guage Chapter 5 Control Flow94.1.2 if語句的嵌套 在if語句中又包含一個或多個if語句稱為if 語句的嵌套。 if語句可以內(nèi)嵌在if子句中,又可以內(nèi)嵌在else子句中。 if ( ) if ( ) 內(nèi)嵌if 語句1 else 語句2 else if ( ) 內(nèi)嵌if 語句3 else 語句4內(nèi)嵌內(nèi)嵌if內(nèi)嵌內(nèi)嵌if如果if與else的數(shù)目不一樣,為實(shí)現(xiàn)程序設(shè)計(jì)者的企圖,可以加花括號來確定配對關(guān)系。if ( ) if ( ) 語句1 (內(nèi)嵌if) else 語句2這時 限定了內(nèi)嵌if語句的范圍,因此else與第一個if配對。 The C Programming

9、 Language Chapter 5 Control Flow10例例4.4 猜數(shù)程序,和預(yù)定的數(shù)比較,并給出相應(yīng)的提示。猜數(shù)程序,和預(yù)定的數(shù)比較,并給出相應(yīng)的提示。 #include stdio.hvoid main() int number=200; int i; scanf(%d,&i); if(inumber) printf(猜大了!); else if(ic) if(ba) max=b; else if(ca) max=c; printf(max=%dn,max);通過這個例子可以認(rèn)識到:通過這個例子可以認(rèn)識到:(1不平衡的不平衡的if-else結(jié)構(gòu)會增加閱讀和理解程序的困

10、難。結(jié)構(gòu)會增加閱讀和理解程序的困難。(2正確的縮進(jìn)格式即鋸齒形書寫格式可以幫助人們正確的縮進(jìn)格式即鋸齒形書寫格式可以幫助人們理解程序,但錯誤的縮進(jìn)格式反而會使人迷惑。理解程序,但錯誤的縮進(jìn)格式反而會使人迷惑。(3不要太相信自己的判斷,要嚴(yán)格按語法關(guān)系檢查程序。不要太相信自己的判斷,要嚴(yán)格按語法關(guān)系檢查程序。在不易弄清的地方可以加花括號來保證自己構(gòu)思的邏輯關(guān)在不易弄清的地方可以加花括號來保證自己構(gòu)思的邏輯關(guān)系的正確性。系的正確性。#include stdio.hvoid main() int a,b,c,max; printf(請輸入a,b,c的值n); scanf(%d,%d,%d,&

11、a,&b,&c); if(ab&bc) max=a; else if(bc&ba) max=b; else max=c; printf(max=%dn,max); The C Programming Language Chapter 5 Control Flow124.2 switch語句一般形式為:switch (表達(dá)式) case常量表達(dá)式1: 語句1; case常量表達(dá)式2: 語句2; case常量表達(dá)式n: 語句n; default : 語句n+1;執(zhí)行時,系統(tǒng)首先求解表達(dá)執(zhí)行時,系統(tǒng)首先求解表達(dá)式的值,然后依次與各個式的值,然后依次與各個case后面給

12、出的常量表達(dá)式的值相后面給出的常量表達(dá)式的值相比較,當(dāng)表達(dá)式的值與某個比較,當(dāng)表達(dá)式的值與某個case后的常量表達(dá)式的值相等后的常量表達(dá)式的值相等時,就從此處開始執(zhí)行該時,就從此處開始執(zhí)行該case后面的語句,而不再進(jìn)行判斷。后面的語句,而不再進(jìn)行判斷。如果所有的如果所有的case后面的常量后面的常量表達(dá)式的值都和表達(dá)式的值不表達(dá)式的值都和表達(dá)式的值不匹配,系統(tǒng)就執(zhí)行匹配,系統(tǒng)就執(zhí)行default后面后面的語句,如果程序省略了的語句,如果程序省略了default語句,那么將不作任何語句,那么將不作任何處理,接著執(zhí)行該選擇結(jié)構(gòu)下處理,接著執(zhí)行該選擇結(jié)構(gòu)下面的語句。面的語句。 The C Prog

13、ramming Language Chapter 5 Control Flow13例例4.6 輸入一個星期數(shù)字,輸出其對應(yīng)的英文單詞。輸入一個星期數(shù)字,輸出其對應(yīng)的英文單詞。 #include stdio.hvoid main()int a;printf(請輸入一個星期數(shù)字(17):);scanf(%d,&a);switch (a) case 1:printf(Mondayn);case 2:printf(Tuesdayn);case 3:printf(Wednesdayn);case 4:printf(Thursdayn);case 5:printf(Fridayn);case 6:

14、printf(Saturdayn);case 7:printf(Sundayn);default:printf(Error!n); 結(jié)果:當(dāng)輸入結(jié)果:當(dāng)輸入3之后,卻執(zhí)行了之后,卻執(zhí)行了case 3以及以后的所有語句,輸出了以及以后的所有語句,輸出了Wednesday及以后的所有單詞。及以后的所有單詞。 switch (a) case 1:printf(Mondayn);break; case 2:printf(Tuesdayn);break; case 3:printf(Wednesdayn);break; case 4:printf(Thursdayn);break; case 5:pri

15、ntf(Fridayn);break; case 6:printf(Saturdayn);break; case 7:printf(Sundayn);break; default:printf(Error!n);在在switch語句中,語句中,“case常量表常量表達(dá)式只相當(dāng)于一個語句標(biāo)號,達(dá)式只相當(dāng)于一個語句標(biāo)號,當(dāng)表達(dá)式的值和某標(biāo)號相等則轉(zhuǎn)當(dāng)表達(dá)式的值和某標(biāo)號相等則轉(zhuǎn)向該標(biāo)號執(zhí)行,但不能在執(zhí)向該標(biāo)號執(zhí)行,但不能在執(zhí)行完該標(biāo)號的語句后自動跳出整行完該標(biāo)號的語句后自動跳出整個個switch 語句,所以出現(xiàn)了語句,所以出現(xiàn)了繼續(xù)執(zhí)行所有后面繼續(xù)執(zhí)行所有后面case語句的情語句的情況。況。 The

16、 C Programming Language Chapter 5 Control Flow14 在使用switch語句時還應(yīng)注意以下幾點(diǎn): 可以是任何類型,經(jīng)常采用整型或字符型表達(dá)式。 case后面必須是常量表達(dá)式,不能包含變量,且各常量表達(dá)式的值不能相同,否則會出現(xiàn)互相矛盾的現(xiàn)象。因?yàn)閏ase后面的常量表達(dá)式實(shí)際上起語句標(biāo)號的作用,而程序中不應(yīng)該同時出現(xiàn)相同標(biāo)號的語句。 在case后,允許有多個語句,可以不用括起來。 各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。 多個case可以共用同一組執(zhí)行語句,此時只有在包含語句的case中有break語句,而其他case

17、中則不包含break語句。 (6switch語句也可以內(nèi)嵌在某個case語句中使用,還可以和if語句或if語句的嵌套形式互相嵌套使用。 The C Programming Language Chapter 5 Control Flow15例例4.7 輸入任一平年的月份,輸出該月份對應(yīng)的天數(shù)。輸入任一平年的月份,輸出該月份對應(yīng)的天數(shù)。 分析:分析:設(shè)月份為設(shè)月份為month,天數(shù)為,天數(shù)為day,則,則有:有:month=1,3,5,7,8,10,12 day=31month=4,6,9,11 day=30month=2 day=28#include stdio.hvoid main()int

18、month,day; printf(請輸入月份(1-12):); scanf(%d,&month); switch (month) case 4: case 6: case 9: case 11:day=30;break; case 2:day=28;break; default:day=31; printf(day=%d,day);if-else if-else 語句與語句與switch語句是多分支選擇的兩種形式。語句是多分支選擇的兩種形式。它們的應(yīng)用環(huán)境不同:它們的應(yīng)用環(huán)境不同:if-else if-else語句用于對多條件并列測試,從中取一的情形;語句用于對多條件并列測試,從中取

19、一的情形;switch語句用于單條件測試,從其多種結(jié)果中取一的情形。語句用于單條件測試,從其多種結(jié)果中取一的情形。 The C Programming Language Chapter 5 Control Flow164.3 程序舉例程序舉例例例4.8 輸入三個整數(shù),輸出最大數(shù)和最小數(shù)。輸入三個整數(shù),輸出最大數(shù)和最小數(shù)。 #include stdio.hvoid main() int a,b,c,max,min; printf(請輸入a,b,c的值n); scanf(%d,%d,%d,&a,&b,&c); if(ab) max=a;min=b; else max=b;m

20、in=a; if(maxc) min=c; printf(max=%dnmin=%d,max,min);首先比較a,b的大小,把大數(shù)裝入max,小數(shù)裝入min中。然后再與c比較,若max小于c,則把c賦予max;如果c小于min,則把c賦予min。因此max總是最大數(shù),而min總是最小數(shù)。最后輸出max和min的值即可。 The C Programming Language Chapter 5 Control Flow17例例4.9 計(jì)算器程序。用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,計(jì)算器程序。用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果。輸出計(jì)算結(jié)果。 #include stdio.hvoid main(

21、) float a,b; char c; printf(請輸入運(yùn)算數(shù)和四則運(yùn)算符如a+(-,*,/)b:); scanf(%f%c%f,&a,&c,&b); switch (c) case +: printf(%fn,a+b);break; case -: printf(%fn,a-b);break; case *: printf(%fn,a*b);break; case /: printf(%fn,a/b);break; default: printf(Input error!n); The C Programming Language Chapter 5 Contr

22、ol Flow18例例4.10 求一元二次方程求一元二次方程ax +bx+c=0的根。的根。 完畢完畢單根單根x=-c/b無解無解兩虛根兩虛根兩實(shí)根兩實(shí)根真真假假假假假假真真真真b=0b2-4ac0a=0開場開場輸入輸入a,b,c#includestdio.h#includemath.hvoid main() float a,b,c,disc,x1,x2,realpart,imagpart; printf(請輸入a,b,c的值n); scanf(%f,%f,%f,&a,&b,&c); if(fabs(a)=1e-6 & fabs(b)=1e-6) printf(

23、方程無解!n); else if(fabs(a)1e-6) printf(方程有單根是%8.4fn,-c/b); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(方程有兩個實(shí)根!n); printf(x1=%8.4fn,x1); printf(x2=%8.4fn,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(方程有兩個虛根!n); printf(x1=%8.4f+%8.4fin,realpart,imagpart); printf(x2=%8.4f-%8.4fin,realpart,imagpart); 2 The C Programming Language Chapter 5 Control Flow19例例4.11 已知某公司員工的底薪為已知某公司員工的底薪為500元,該員工在某月所

溫馨提示

  • 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

提交評論