C語言實(shí)例教程-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第1頁
C語言實(shí)例教程-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第2頁
C語言實(shí)例教程-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第3頁
C語言實(shí)例教程-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第4頁
C語言實(shí)例教程-選擇結(jié)構(gòu)程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、選擇結(jié)構(gòu)程序設(shè)計(jì) 成績管理中成績的判斷處理案例引入假設(shè)學(xué)生成績表如下:任務(wù)描述成績管理中成績的判斷處理案例引入1.試編寫程序,根據(jù)終結(jié)性考核成績(score)給出相應(yīng)考核的水平等級。2.試編寫程序,找出終結(jié)性考核成績(score)的最高分和最低分。說明:D不及格(60)、C及格(60-79)、B良好(80-89)、A優(yōu)秀(90-100)。任務(wù)描述如果要對很多學(xué)生的成績進(jìn)行以上處理有什么更好的方法。請預(yù)習(xí)教材的下一章,在其中找到辦法。想一想1.根據(jù)終結(jié)性考核成績(score)給出相應(yīng)考核的水平等級。 #include stdio.h main() float score;char ch; sca

2、nf(%f,&score); switch(int)(score/10.0) case 10: case 9: ch=A;break; case 8: ch=B;break; case 7: case 6: ch=C;break; default: ch=D; printf(score=%.1f,grade=%cn,score,ch); 成績管理中成績的判斷處理案例引入源代碼展示開始運(yùn)行2.找出終結(jié)性考核成績(score)的最高分和最低分(假設(shè)三個(gè)學(xué)生的成績,10個(gè)成績編程思路以此類推)。 #include main() float s1,s2,s3,min,max; printf(pleas

3、e input s1,s2,s3:); scanf(%f%f%f,&s1,&s2,&s3); min=max=s1; if(s2max) max=s2; if(s3max) max=s3; printf(min=%.1f,max=%.1fn,min,max); 源代碼展示開始運(yùn)行成績管理中成績的判斷處理案例引入成績管理中成績的判斷處理案例引入運(yùn)行結(jié)果成績管理中成績的判斷處理案例引入程序1:成績等級有4種,所以要判斷成績在那個(gè)范圍之內(nèi),采用多分支語句。由于成績有規(guī)律的等級劃分,所以用switch比較方便,注意表達(dá)式的使用(int)(score/10.0)。程序2:從一組數(shù)據(jù)中找最大值、最小值,我

4、們約定第一個(gè)數(shù)就是最大、最小值(max,min),這樣后面的數(shù)據(jù)依次跟當(dāng)前的最大、最小比較就可以了。最后max、min中存儲的就是最大、最小值。 運(yùn)行結(jié)果程序分析能力目標(biāo)1.具備用邏輯表達(dá)式描述客觀條件的能力。2.具備應(yīng)用分支結(jié)構(gòu)設(shè)計(jì)算法的能力。3.培養(yǎng)軟件開發(fā)必備的邏輯思維能力。關(guān)系運(yùn)算符和關(guān)系表達(dá)式1邏輯運(yùn)算符和邏輯表達(dá)式2if 語句3switch 語句4技能訓(xùn)練5知識要求4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算是邏輯運(yùn)算中比較簡單的一種,“關(guān)系運(yùn)算”就是“比較運(yùn)算”。即將兩個(gè)值進(jìn)行比較,判斷是否符合或滿足給定的條件。如果符合或滿足給定的條件,則稱關(guān)系運(yùn)算的結(jié)果為“真”;如果不符合或不滿足給定

5、的條件,則稱關(guān)系運(yùn)算的結(jié)果為“假”。4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.1關(guān)系運(yùn)算符(大于) =(大于等于) = =(等于) !=(不等于)6種關(guān)系運(yùn)算符 (1)前4種關(guān)系運(yùn)算符的優(yōu)先級別相同,后兩種也相同。前4種高于后兩種; (2)關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符; (3)關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符。優(yōu)先次序關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符例4.1:關(guān)系運(yùn)算符的實(shí)例ca+b 等價(jià)于c(a+b) 。關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符。ab=c等價(jià)于(ab)=c ?!啊眱?yōu)先級高于“=”。a=bc 等價(jià)于a=(bc 等價(jià)于a=(bc) 。4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.1關(guān)系運(yùn)算符示例注4

6、.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.2關(guān)系表達(dá)式關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。C語言沒有邏輯型數(shù)據(jù),以1代表“真”,以0代表“假”。例4.2:關(guān)系表達(dá)式的實(shí)例假如a=3,b=2,c=1,則:關(guān)系表達(dá)式“ab”的值為“真”,即表達(dá)式的值為:1。關(guān)系表達(dá)式“b+c3 值為1若a=3;b=2;c=1;則abc 值為 0。 應(yīng)用:描述各種簡單條件兒童:age=60及格:score=60判斷整數(shù)n 為偶數(shù) n%2=0示例4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.1邏輯運(yùn)算符C語言提供三種邏輯運(yùn)算符:! 邏輯非(條件為真,運(yùn)算后為假,條件為假,運(yùn)算后為真)& 邏輯與(相當(dāng)日常生活中:而且,并且,只

7、在兩條件同時(shí)成立時(shí)為“真”| 邏輯或(相當(dāng)日常生活中:或,兩個(gè)條件只要有一個(gè)成立時(shí)即為“真”)非(!)運(yùn)算表達(dá)式 !表達(dá)式 0 1 1 0 4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式語法:!表達(dá)式表達(dá)式1 & 表達(dá)式2表達(dá)式1 | 表達(dá)式2功能:表達(dá)式1和表達(dá)式2的值為邏輯值,其運(yùn)算結(jié)果見真值表。表達(dá)式1表達(dá)式2表達(dá)式1&表達(dá)式20000101001114.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式與(&)運(yùn)算表達(dá)式1表達(dá)式2表達(dá)式1&表達(dá)式20000101001114.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式或(|)運(yùn)算在一個(gè)邏輯表達(dá)式中如果包含多個(gè)邏輯運(yùn)算符,則按照以下的優(yōu)先順

8、序: (1)?。ǚ牵?&(與)-|(或),“!”為三者中最高。 (2)邏輯運(yùn)算符中的&和|低于關(guān)系運(yùn)算符,!高于算術(shù)運(yùn)算符。4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式系統(tǒng)給出的邏輯運(yùn)算結(jié)果不是0就是1,不可能是其它數(shù)值。而在邏輯表達(dá)式中作為參與邏輯運(yùn)算的運(yùn)算對象可以是0,也可以是任何非0的數(shù)值(按“真”對待)。事實(shí)上,邏輯運(yùn)算符兩側(cè)的對象不但可以是0和非0的整數(shù),也可以是任何類型的數(shù)據(jù)(如字符型、實(shí)型、指針型)。小提示例4.3:邏輯運(yùn)算符的實(shí)例ab&xy等價(jià)于 (ab)&(xy)a=b|x=y等價(jià)于 (a=b)|(x=y)!a|ab 等價(jià)于 (!a)|(ab)例4.4:非0值作為邏輯值參

9、與運(yùn)算非0值作為邏輯值參與運(yùn)算=“真”(此時(shí)與1的作用一樣) 若a=4, 則!a=0(假)。 若a=4,b=5, 則a&b=1(真),a|b=1(真),!a|b=1(真) 4&0|2=1(真) c(真)&d(真)=14.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例如:a&b&c,只有a為真,才需要判別b的值;只有a、b都為真,才需要判別c的值。只要a為假,此時(shí)整個(gè)表達(dá)式已經(jīng)確定為假,就不必判別b,c;如果a為真,b為假,不判

10、斷c。a|b|c,只要a為真,整個(gè)表達(dá)式已經(jīng)確定為真,就不必判斷b和c;只有a為假,才判斷b;a、b都為假才判斷c。4.3IF 語句表達(dá)式語句真(非0)假(0)if流程圖4.3.1簡單if語句語法:if(邏輯表達(dá)式) 語句 功能:判斷表達(dá)式是否成立,若成立執(zhí)行語句,不成立執(zhí)行下一語句例如:統(tǒng)計(jì)及格人數(shù)。 if(score =60) printf(“及格”); c1=c1+1; 例4.6:從鍵盤輸入2個(gè)不相等的數(shù),存入a和b,判斷a和b的大小,使ab。#includemain()int a,b,t;scanf(“%d%d”,&a,&b);if(a=60) printf(“及格”); c1=c1+

11、1; else printf(“不及格”); c2=c2+1; 等價(jià): if(score=60) printf(“及格”);c1=c1+1; if(score 60) printf(“不及格”);c2=c2+1;4.3if 語句4.3.2標(biāo)準(zhǔn)ifelse語句 例4.8:找3個(gè)數(shù)中的最小數(shù) #include main() int a,b,c,min; printf(“please input a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); min=a; if(bmin)min=b; if(cmin)min=c; printf(“min=%dn”,min); #includ

12、e main() int a,b,c,t; printf(“please input a,b,c:”); scanf(“%d%d%d”,&a,&b,&c); printf(“1:a=%d,b=%d,c=%dn”,a,b,c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(“2:a=%d,b=%d,c=%dn”,a,b,c); 4.3if 語句4.3.2標(biāo)準(zhǔn)ifelse語句例4.9:3個(gè)數(shù)排序,隨機(jī)輸入三個(gè)數(shù)至a,b,c,編程使得輸出a,b,c為升序。4.3if 語句4.3.3嵌套if語句一個(gè)if語句又包含

13、一個(gè)或多個(gè)if語句稱為if語句的嵌套。嵌套if語句的標(biāo)準(zhǔn)語法格式為: if(表達(dá)式) if(表達(dá)式)語句1; else語句2; else if(表達(dá)式)語句3; else語句4;這種在if語句中又包含if的選擇結(jié)構(gòu),常用于解決比較復(fù)雜的選擇問題,其中每一條語句都必須經(jīng)過多個(gè)條件共同決定才能執(zhí)行。 (1)嵌套if 語句使用非常靈活,任何if語句都可以嵌套; (2)被嵌套的if語句本身又可以是一個(gè)嵌套的if語句; (3)在多種嵌套的if語句中,else總是與離它最近并且沒有配對的if配對。 例:函數(shù): -1(x0) 編一個(gè)程序,輸入x,輸出y。 #include main() int x,y; s

14、canf(“%d”,&x); if(x0)y=-1; else if(x=0)y=0; else y=1; printf(“x=%d,y=%dn”,x,y); 4.3if 語句4.3.3嵌套if語句示例多分支if語句實(shí)際上也是一種特殊的嵌套if語句。不斷在else子句中嵌套if語句可形成多層嵌套,用以下語句形式表示,使得讀起來既層次分明,又不占太多的篇幅。 if(邏輯表達(dá)式1)語句1 else if(邏輯表達(dá)式2)語句2 else if(邏輯表達(dá)式3)語句3 . else if(邏輯表達(dá)式m)語句m else 語句n4.3if 語句4.3.4多分支的ifelse if語句 #include m

15、ain() int score; printf(“Please input score:”); scanf(%d,&score); if(score60) printf(%d-En,score); else if(score70) printf(%d-Dn,score); else if(score80) printf(%d-Cn,score) else if(scoreb)?a:b; 等價(jià):if(ab) max=a; else max=b;4.4條件運(yùn)算符和條件表達(dá)式 例4.12:輸入一個(gè)字符,如果是大寫字母,轉(zhuǎn)換為小寫,如果不是不轉(zhuǎn)換,最后輸出。 main() char ch; scanf

16、(“%c”,&ch); ch= (ch=A&ch=Z) ? (ch+32) :ch; printf(“%c”,ch); 4.4條件運(yùn)算符和條件表達(dá)式4.5switch語句 多分支可以使用嵌套的if語句處理,但如果分支較多,嵌套的if語句層數(shù)多,程序冗長,降低可讀性。switch語句又稱為開關(guān)語句,專門用來處理多分支選擇問題,比復(fù)合if語句及嵌套if語句更方便靈活,而且程序可讀性也更高。4.5switch語句 switch語法: switch(表達(dá)式) case 常量1:語句1;break; case 常量2:語句2;break; . case 常量n:語句n;break; default: 語

17、句n+1; switch流程圖4.5switch語句 4.5switch語句 (1)switch括號后面的表達(dá)式,允許為任何類型。一般為整型或字符型等有序類型; (2)當(dāng)“表達(dá)式”的值與某個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語句。如果表達(dá)式的值與所有常量表達(dá)式都不匹配,就執(zhí)行default后面的語句(如果沒有default就執(zhí)行跳出switch,執(zhí)行switch語句后面的語句)。 (3)各個(gè)常量表達(dá)式的值必須互不相同,否則出現(xiàn)矛盾。說明4.5switch語句 (4)各個(gè)case,default出現(xiàn)的順序不影響執(zhí)行結(jié)果。 (5)執(zhí)行完一個(gè)case后面的語句后(子句最后沒有

18、break),流程控制轉(zhuǎn)移到下一個(gè)case中的語句繼續(xù)執(zhí)行。此時(shí),“case 常量表達(dá)式”只是起到語句標(biāo)號的作用,并不在此處進(jìn)行條件判斷。在執(zhí)行一個(gè)分支后,可以使用break語句使流程跳出switch結(jié)構(gòu),即終止switch語句的執(zhí)行(最后一個(gè)分支可以不用break語句)。說明4.5switch語句 注意:switch語句中本來不包含break語句,但switch語句不像if語句一樣只要滿足某一條件則可在執(zhí)行相應(yīng)的分支后自動結(jié)束選擇。在switch語句中,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),就執(zhí)行后年對應(yīng)的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有的case分支語句,因此需要在相應(yīng)的case分支的最后加上break以幫助結(jié)束選擇。 (6)case后面如果有多條語句,不必用括起來。 (7)多個(gè)case可以共用一組執(zhí)行語句。(注意break使用的位置)。說明 #include stdio.h main() float score;char ch; scanf(%f,&score); switch(int)(score/10.0) case 10: case 9: ch=A;break; case 8: ch=B;break; case

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論