第4章分支結(jié)構(gòu)程序設(shè)計_第1頁
第4章分支結(jié)構(gòu)程序設(shè)計_第2頁
第4章分支結(jié)構(gòu)程序設(shè)計_第3頁
第4章分支結(jié)構(gòu)程序設(shè)計_第4頁
第4章分支結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、語言程序設(shè)計1第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計語言程序設(shè)計2第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.14.1關(guān)系運算符和關(guān)系表達式關(guān)系運算符和關(guān)系表達式4.24.2邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式4.3 if4.3 if語句以及用語句以及用ifif語句構(gòu)成的分支結(jié)構(gòu)語句構(gòu)成的分支結(jié)構(gòu)4.4 switch4.4 switch語句以及用語句以及用switchswitch語句和語句和breakbreak語句語句構(gòu)成的分支結(jié)構(gòu)構(gòu)成的分支結(jié)構(gòu)4.54.5程序舉例程序舉例主要內(nèi)容:主要內(nèi)容:語言程序設(shè)計3第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.14.1關(guān)

2、系運算符和關(guān)系表達式關(guān)系運算符和關(guān)系表達式 4.1.1 4.1.1 關(guān)系運算符關(guān)系運算符 C C語言提供以下語言提供以下6 6種關(guān)系運算符:種關(guān)系運算符:(1) (1) ( (大于大于) )(2)=(2)=(大于等于)(大于等于)(3)(3)(小于)(小于)(4)=(4)=(小于等于)(小于等于)(5)=(5)=(等于)(等于)(6)!=(6)!=(不等于)(不等于)語言程序設(shè)計4第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計關(guān)系運算符都是雙目運算符,其結(jié)合性為從關(guān)系運算符都是雙目運算符,其結(jié)合性為從左到右。關(guān)系成立,則關(guān)系運算的的值為左到右。關(guān)系成立,則關(guān)系運算的的值為1 1,即,即邏輯邏

3、輯“真真”;關(guān)系不成立,則關(guān)系運算的值為;關(guān)系不成立,則關(guān)系運算的值為0 0,即邏輯即邏輯“假假”。例如:例如: 3535 ( (值為值為1) 1) 5!=3 5!=3 (值為(值為1 1) 5=35=3 (值為(值為0 0) aba 、=、 、=bcabcx=yz x=yz 語言程序設(shè)計6第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,但高關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,但高于賦值運算符。于賦值運算符。 例如:例如:x=yzx=yz等價于等價于x=(yz)x=(yz),先計算,先計算yzyb+cab+c等價于等價于a(b+c)a(b+c)。語言程序設(shè)計7第

4、第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計如果如果a a和和b b都是實型數(shù)據(jù),應(yīng)避免使用都是實型數(shù)據(jù),應(yīng)避免使用a=ba=b這樣這樣的關(guān)系表達式,因為在內(nèi)存中存放的實型數(shù)據(jù)是的關(guān)系表達式,因為在內(nèi)存中存放的實型數(shù)據(jù)是有誤差的。有誤差的。注意賦值運算符注意賦值運算符“= =”和關(guān)系運算符和關(guān)系運算符“=”的區(qū)別。的區(qū)別。語言程序設(shè)計8第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.1.2 4.1.2 關(guān)系表達式關(guān)系表達式 由關(guān)系運算符構(gòu)成的表達式,稱關(guān)系表達式。由關(guān)系運算符構(gòu)成的表達式,稱關(guān)系表達式。關(guān)系運算符兩邊的運算對象可以是關(guān)系運算符兩邊的運算對象可以是C C語言中任意合語言中任

5、意合法的表達式。法的表達式。 關(guān)系表達式的值為關(guān)系表達式的值為“邏輯值邏輯值”,即,即“真真”和和“假假”,“真真”用整數(shù)用整數(shù)1 1來表示,來表示,“假假”用整數(shù)用整數(shù)0 0來表來表示。示。語言程序設(shè)計9第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計以下都是合法的關(guān)系表達式:以下都是合法的關(guān)系表達式: a+bc+da+bc+d (a=3)(b=5) (a=3)(b=5) x!=y x!=y ac=c ac=c a+1=b a+1=b A+32=B A+32=B【例例4.14.1】關(guān)系運算符和關(guān)系表達式舉例。關(guān)系運算符和關(guān)系表達式舉例。 #include #include void main

6、() void main() int a=3,b=5,c=23; int a=3,b=5,c=23; char ch=A; char ch=A; printf(%d,%dn,ab,ab,ab+c); printf(%d,%dn,a!=ch,c=a+b); printf(%d,%dn,a!=ch,c=a+b); printf(%d,%dn,ac,ch+32=a); printf(%d,%dn,ac,ch+32=a); 運行結(jié)果:運行結(jié)果:0,10,11,01,00,10,1語言程序設(shè)計10第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.24.2邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式 4

7、.2.1 4.2.1 邏輯運算符邏輯運算符 在在C C語言中,選擇條件不僅可以由關(guān)系表達語言中,選擇條件不僅可以由關(guān)系表達式組成,還可以由邏輯表達式組成,進行邏輯判式組成,還可以由邏輯表達式組成,進行邏輯判斷時,數(shù)據(jù)的值為非斷時,數(shù)據(jù)的值為非0 0,即為邏輯,即為邏輯“真真”,數(shù)據(jù),數(shù)據(jù)的值為的值為0 0,即為邏輯,即為邏輯“假假”。邏輯運算與關(guān)系運。邏輯運算與關(guān)系運算的結(jié)果都是算的結(jié)果都是“邏輯值邏輯值”,即,即“真真”或或“假,分假,分別用整數(shù)別用整數(shù)1 1和和0 0表示。表示。語言程序設(shè)計11第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計 C C語言提供了語言提供了3 3種邏輯運算符:

8、種邏輯運算符: (1) (1) !(邏輯(邏輯“非非”) (2)&(2)&(邏輯(邏輯“與與”) (3)|(3)| (邏輯(邏輯“或或”) 邏輯運算符的結(jié)合性為從左到右。邏輯運算符的結(jié)合性為從左到右。 當參與邏輯當參與邏輯“與與”(&)運算的兩個操作)運算的兩個操作數(shù)都為數(shù)都為“真真”,結(jié)果才為,結(jié)果才為“真真”。 當參與邏輯當參與邏輯“或或”(|)運算的兩個操作)運算的兩個操作數(shù)中只要有一個為數(shù)中只要有一個為“真真”,結(jié)果就為,結(jié)果就為“真真”。語言程序設(shè)計12第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計說明:說明: 3 3種邏輯運算符的優(yōu)先級從高到低是:種邏輯運

9、算符的優(yōu)先級從高到低是:! !、&、|。 邏輯運算符與關(guān)系運算符、算術(shù)運算符、賦值邏輯運算符與關(guān)系運算符、算術(shù)運算符、賦值運算符之間的優(yōu)先級從高到低是:?。ㄟ壿嬤\算符之間的優(yōu)先級從高到低是:?。ㄟ壿嫛胺欠恰保⑺阈g(shù)運算符、關(guān)系運算符、邏輯運算)、算術(shù)運算符、關(guān)系運算符、邏輯運算符(符(&和和|)、賦值運算符。)、賦值運算符。例如:例如:x=a+bc&!c+dx=a+bc&!c+d等價于:等價于:x=(a+b)c&(!c)+d)x=(a+b)c&(!c)+d)語言程序設(shè)計13第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計關(guān)于邏輯運算符關(guān)于邏輯運算

10、符“!”例如:例如:!(ab)!(ab)/ /* *等價于等價于a=bab)&(cb)&(c=d) / /* *等價于等價于(ad)(ad)* */ /在在C C語言中,由語言中,由“&”或或“|”構(gòu)成的邏輯表達式構(gòu)成的邏輯表達式,在某些情況下會產(chǎn)生,在某些情況下會產(chǎn)生“短路短路”。例如:例如: int a=0,b=1;int a=0,b=1; a+&b+; a+&b+; printf(%d,%dn,a,b); printf(%d,%dn,a,b);輸出:輸出:1,1 1,1 再如:再如: int a=0,b=1;int a=0,b=1; a+|b+;

11、a+|b+; printf(%d,%dn,a,b); printf(%d,%dn,a,b);輸出:輸出:1,21,2語言程序設(shè)計14第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.2.2 4.2.2 邏輯表達式邏輯表達式 由邏輯運算符構(gòu)成的表達式,稱為邏輯由邏輯運算符構(gòu)成的表達式,稱為邏輯表達式。邏輯運算符兩邊的運算對象可以是表達式。邏輯運算符兩邊的運算對象可以是C C語言中任意合法的表達式。語言中任意合法的表達式。 邏輯表達式的值為邏輯表達式的值為“邏輯值邏輯值”,即,即“真真”和和“假假”,“真真”用整數(shù)用整數(shù)1 1來表示,來表示,“假假”用整數(shù)用整數(shù)0 0來表示。來表示。語言程序設(shè)計

12、15第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計以下都是合法的邏輯表達式:以下都是合法的邏輯表達式: a+3b-5&!ca+3b-5&!c a|b&c a|b&c x+y&xy x+y&xy !a !a【例例4.24.2】邏輯運算符和邏輯表達式舉例邏輯運算符和邏輯表達式舉例 #include #include void main() void main() int a=3,b=5,c=23; int a=3,b=5,c=23; int x=9,y=10; int x=9,y=10; printf(%d,%dn, a+3b-5&!c,

13、a|b&c); printf(%d,%dn, a+3b-5&!c, a|b&c); printf(%d,%dn, x+y&xy, !a); printf(%d,%dn, x+y&xb)if(ab) a+; a+;/ /* *ifif子句子句* */ /b+;b+;再如:再如:if(ab)if(ab) a+; a+; b+; b+;/ /* *此復(fù)合語句是此復(fù)合語句是ifif子句子句* */ / c+; c+;語言程序設(shè)計20第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計說明:說明:ifif后面一對圓括號中的表達式可以是任意后面一對圓括號中的表達式可以是

14、任意合法的表達式,如:合法的表達式,如:關(guān)系表達式,如關(guān)系表達式,如xyxy邏輯表達式,如邏輯表達式,如ab&bc ab&bc 算術(shù)表達式,如算術(shù)表達式,如a+ba+b賦值表達式,如賦值表達式,如x=y x=y 變量,如變量,如a a常量,如常量,如-5-5自增(自增(+)、自減()、自減(-)也可以出現(xiàn)在條件)也可以出現(xiàn)在條件表達式里,如表達式里,如x+yx+y語言程序設(shè)計21第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計例如:例如:if(x=y)if(x=y) printf(%dn,x+); printf(%dn,x+);printf(%dn, +y);printf(%d

15、n, +y);再如:再如:if(a+b)if(a+b) printf(%dn,a/b); printf(%dn,a/b);printf(%dn, a%b);printf(%dn, a%b);語言程序設(shè)計22第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計使用使用ifif語句要注意以下幾個方面:語句要注意以下幾個方面:(1)if(1)if是是C C語言的關(guān)鍵字,必須小寫,而且語言的關(guān)鍵字,必須小寫,而且ifif后面的后面的一對圓括號不能省略。一對圓括號不能省略。(2)(2)不要輕易在不要輕易在ifif后面的一對圓括號后面加分號,后面的一對圓括號后面加分號,否則會出現(xiàn)錯誤或改變了否則會出現(xiàn)錯誤或改

16、變了ifif的子句。的子句。例如:例如:if(ab)if(ab); a+;a+;b+;b+;語言程序設(shè)計23第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計2.2.雙分支雙分支ifif語句。語句格式如下:語句。語句格式如下: if(if(表達式表達式) ) 語句語句1 1 else else 語句語句2 2語句執(zhí)行過程如下:語句執(zhí)行過程如下:首先計算緊跟在首先計算緊跟在ifif后面一對圓括號中的表達式的值。后面一對圓括號中的表達式的值。(1)(1)如果表達式的值為如果表達式的值為“真真”,則執(zhí)行其后的,則執(zhí)行其后的ifif子句,子句,即其下面的最近的一條語句或其下面最近的復(fù)合語句即其下面的最近

17、的一條語句或其下面最近的復(fù)合語句,然后再去執(zhí)行,然后再去執(zhí)行ifif語句后面的其他語句。語句后面的其他語句。(2)(2)如果表達式的值為如果表達式的值為“假假”,則跳過,則跳過ifif子句,去執(zhí)行子句,去執(zhí)行elseelse子句,然后再去執(zhí)行子句,然后再去執(zhí)行ifif語句后面的其他語句。語句后面的其他語句。語言程序設(shè)計24第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計其執(zhí)行過程可用下面流程圖來表示:其執(zhí)行過程可用下面流程圖來表示:圖圖4.2 4.2 雙分支選擇結(jié)構(gòu)的執(zhí)行過程雙分支選擇結(jié)構(gòu)的執(zhí)行過程語言程序設(shè)計25第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計例如:例如:if(ab)if(a

18、b) printf(%dn,a); printf(%dn,a); / /* *ifif子句子句* */ / else printf(%dn,b);else printf(%dn,b);/ /* *elseelse子句子句* */ /使用使用ififelse else 語句應(yīng)注意以下幾個方面:語句應(yīng)注意以下幾個方面:(1)if(1)if和和elseelse都是都是C C語言的關(guān)鍵字,必須小寫。語言的關(guān)鍵字,必須小寫。(2)else(2)else不是一條獨立的語句,不能單獨出現(xiàn),不是一條獨立的語句,不能單獨出現(xiàn),必須與必須與ifif配對使用,配對的原則是:配對使用,配對的原則是:elseelse與

19、其上與其上面最近的且沒使用的面最近的且沒使用的ifif配對。配對。 語言程序設(shè)計26第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計 #include#include void main() void main() int a=2,b=-1,c=2; int a=2,b=-1,c=2; if(ab) if(ab) if(b0) c=0; if(b0) c=0; else c+=1; else c+=1; printf(c=%d,c); printf(c=%d,c); 【例例4.34.3】分析下面程序分析下面程序 運行結(jié)果:運行結(jié)果:c=2c=2語言程序設(shè)計27第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分

20、支結(jié)構(gòu)程序設(shè)計在在ifif和和elseelse之間不能出現(xiàn)第二條語句或第二條復(fù)之間不能出現(xiàn)第二條語句或第二條復(fù)合語句,否則會出現(xiàn)錯誤提示。合語句,否則會出現(xiàn)錯誤提示。例如:例如:if(x=y)if(x=y) x+; x+; printf(%dn,x); printf(%dn,x);else printf(%dn,xelse printf(%dn,x* *y);y);改寫成:改寫成:if(x=y)if(x=y)x+;x+; printf(%dn,x); printf(%dn,x);else else printf(%dn,xprintf(%dn,x* *y);y);語言程序設(shè)計28第第4 4章章

21、 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計#include#include main( ) main( ) int a,b,c,max; int a,b,c,max; printf(Enter a,b,c printf(Enter a,b,c:n);n); scanf(%d%d%d,&a,&b,&c); scanf(%d%d%d,&a,&b,&c); max=a; max=a; if(bmax) if(bmax) max=b; max=b; if(cmax) if(cmax) max=c; max=c; printf(max=%dn,max); prin

22、tf(max=%dn,max); 運行結(jié)果:運行結(jié)果:Enter a,b,cEnter a,b,c:3 5 63 5 6 max=6max=6【例例4.44.4】輸入三個整數(shù)輸入三個整數(shù)a a、b b、c c,要求輸出最大的數(shù)。,要求輸出最大的數(shù)。語言程序設(shè)計29第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.3.2 4.3.2 嵌套的嵌套的ifif語句語句 1.1.在在ifif語句中嵌套不含語句中嵌套不含elseelse子句的子句的ifif語句語句語句格式如下:語句格式如下: if( if(表達式表達式1)1) if( if(表達式表達式2) 2) 語句語句1 1; / /* *ifif

23、子句子句* */ / else else 語句語句2 2;注意:上述語句格式中的一對花括號注意:上述語句格式中的一對花括號不能省不能省略,如果省略了一對花括號略,如果省略了一對花括號,則則elseelse就會與就會與第二個第二個ifif配對,形成了如下形式:配對,形成了如下形式:語言程序設(shè)計30第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計if(if(表達式表達式1)1) if( if(表達式表達式2) 2) 語句語句1 1; else else 語句語句2 2;等價于:等價于:if(if(表達式表達式1)1) if( if(表達式表達式2) 2) 語句語句1 1; else else 語句

24、語句2 2; 例如:例如: if(a)if(a) if(b) b+; if(b) b+; else a+; else a+; 假設(shè)假設(shè)a a和和b b的初值都為的初值都為0 0,上述程序段執(zhí)行后:,上述程序段執(zhí)行后:a=1a=1,b=0b=0。如果去掉上述程序段中的一對花括號。如果去掉上述程序段中的一對花括號,則上述程序段執(zhí)行后:則上述程序段執(zhí)行后:a=0a=0,b=0b=0。 語言程序設(shè)計31第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計2.2.在在ifif語句中嵌套含有語句中嵌套含有elseelse子句的子句的ifif語句語句 語句格式如下:語句格式如下: if(if(表達式表達式1)1

25、) if( if(表達式表達式2) 2) 語句語句1 1; else else 語句語句2 2; else else 語句語句3 3; 例如:例如: int a=2,b=4,c=0;int a=2,b=4,c=0; if(a) if(a) if(!b) c=a1; if(!b) c=a1; else c=b1; else c+=1; else c+=1;程序運行后,程序運行后,c c的值等于的值等于2 2。 語言程序設(shè)計32第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計3.3.在在elseelse子句中嵌套不含子句中嵌套不含elseelse子句的子句的ifif語句語句語句格式如下:語句格式如

26、下:if(if(表達式表達式1) 1) 語句語句1 1; else else if( if(表達式表達式2) 2) 語句語句2 2;或?qū)懗桑夯驅(qū)懗桑篿f(if(表達式表達式1) 1) 語句語句1 1;else if(else if(表達式表達式2) 2) 語句語句2 2;語言程序設(shè)計33第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計例如:例如: int a=6,b=9,c;int a=6,b=9,c; if(a=b) if(a=b) c=ab; c=ab; else if(ab) c=a|b; else if(ab) c=a|b;程序運行后,程序運行后,c c的值等于的值等于1515。4.4

27、.在在elseelse子句中嵌套含有子句中嵌套含有elseelse子句的子句的ifif語句語句 語句格式如下:語句格式如下: if( if(表達式表達式1) 1) 語句語句1 1; else else if( if(表達式表達式2) 2) 語句語句2 2; else else 語句語句3 3; 語言程序設(shè)計34第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計【例例4.54.5】根據(jù)輸入的學(xué)生成績輸出相應(yīng)的等級,大根據(jù)輸入的學(xué)生成績輸出相應(yīng)的等級,大于或等于于或等于9090分以上的等級為分以上的等級為A A,大于或等于,大于或等于8080分并且分并且小于小于9090分的等級為分的等級為B B,以

28、此類推,每,以此類推,每1010分為一個等級,分為一個等級,6060分以下的等級為分以下的等級為E E。 #include#includevoid main()void main() int score; int score; printf(Input score:); printf(Input score:); scanf(%d,&score); scanf(%d,&score); if(score=90) if(score=90) printf(The %d is belong to %cn,score,A); printf(The %d is belong to %cn,

29、score,A); else if(score=80) else if(score=80) printf(The %d is belong to %cn,score,B); printf(The %d is belong to %cn,score,B); else if(score=70) else if(score=70) printf(The %d is belong to %cn,score,C); printf(The %d is belong to %cn,score,C); else if(score=60) else if(score=60) printf(The %d is b

30、elong to %cn,score,D); printf(The %d is belong to %cn,score,D); else printf(The %d is belong to %cn,score,E); else printf(The %d is belong to %cn,score,E); 程序運行結(jié)果:程序運行結(jié)果:Input score:85Input score:85 The 85 is belong to BThe 85 is belong to BInput score:56Input score:56 The 56 is belong to E The 56 i

31、s belong to E 語言程序設(shè)計35第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計上述程序的執(zhí)行過程可用下面流程圖來表示:上述程序的執(zhí)行過程可用下面流程圖來表示:語言程序設(shè)計36第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.3.3 4.3.3 條件表達式構(gòu)成的分支結(jié)構(gòu)條件表達式構(gòu)成的分支結(jié)構(gòu) 條件運算符是由條件運算符是由“? ?”和和“:”組成的,它是一個組成的,它是一個三目運算符,即要求有三個運算對象。三目運算符,即要求有三個運算對象。 由條件運算符構(gòu)成的條件表達式的一般形式為:由條件運算符構(gòu)成的條件表達式的一般形式為: 表達式表達式1 1?表達式?表達式2 2:表達式:表達

32、式3 3 執(zhí)行過程為:如果表達式執(zhí)行過程為:如果表達式1 1的值為真,則以表達的值為真,則以表達式式2 2 的值作為條件表達式的值,否則以表達式的值作為條件表達式的值,否則以表達式3 3的的值作為整個條件表達式的值。值作為整個條件表達式的值。 語言程序設(shè)計37第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計條件表達式通常用于賦值語句之中。條件表達式通常用于賦值語句之中。例如條件語句:例如條件語句: if(ab) max=a;if(ab) max=a; else max=b; else max=b;可用條件表達式寫為可用條件表達式寫為 max=(ab)?a:b;max=(ab)?a:b;使用條件

33、表達式時,還應(yīng)注意以下幾點:使用條件表達式時,還應(yīng)注意以下幾點:條件運算符的運算優(yōu)先級低于關(guān)系運算符和條件運算符的運算優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,但高于賦值符。算術(shù)運算符,但高于賦值符。 語言程序設(shè)計38第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計條件運算符條件運算符? ?和:是一對運算符,不能分開單和:是一對運算符,不能分開單獨使用。獨使用。條件運算符的結(jié)合方向是自右至左。條件運算符的結(jié)合方向是自右至左。 例如:例如:ab?a:cd?c:dab?a:cd?c:d應(yīng)理解為應(yīng)理解為ab?a:(cd?c:d)ab?a:(cd?c:d)例如例如: int a=6,b=3,c=9,d=7,t

34、1,t2;int a=6,b=3,c=9,d=7,t1,t2; t1= ab?a:(cd?c:d); t1= ab?a:(cd?c:d); t2=ab?(ac?d:c):d; t2=ab?(ac?d:c):d; printf(t1=%dnt2=%dn,t1,t2); printf(t1=%dnt2=%dn,t1,t2);程序運行結(jié)果:程序運行結(jié)果:t1=6t1=6t2=9t2=9語言程序設(shè)計39第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.4 switch4.4 switch語句以及用語句以及用switchswitch語句和語句和breakbreak語語句構(gòu)成的分支結(jié)構(gòu)句構(gòu)成的分支結(jié)構(gòu)4

35、.4.1 switch4.4.1 switch語句及用語句及用switchswitch語句構(gòu)成的分支結(jié)構(gòu)語句構(gòu)成的分支結(jié)構(gòu)1.switch1.switch語句的格式語句的格式 switch(switch(表達式表達式) ) case case 常量表達式常量表達式1 1:語句組:語句組1 1或空;或空; case case 常量表達式常量表達式2 2:語句組:語句組2 2或空;或空;case case 常量表達式常量表達式n n:語句組:語句組n n或空;或空;defaultdefault:缺省語句組;:缺省語句組; 語言程序設(shè)計40第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計在使用在使用

36、switchswitch語句時,應(yīng)注意以下幾點:語句時,應(yīng)注意以下幾點: switchswitch后面的表達式可以是整型常量或變量、字后面的表達式可以是整型常量或變量、字符常量或變量、關(guān)系表達式、邏輯表達式、整型算符常量或變量、關(guān)系表達式、邏輯表達式、整型算術(shù)表達式等。術(shù)表達式等。casecase后面的常量表達式可以為任何整型數(shù)據(jù)或字后面的常量表達式可以為任何整型數(shù)據(jù)或字符型數(shù)據(jù)但不能是變量。符型數(shù)據(jù)但不能是變量。每一個每一個casecase的常量表達式的值必須互不相同,否的常量表達式的值必須互不相同,否則就會出現(xiàn)互相矛盾的現(xiàn)象。則就會出現(xiàn)互相矛盾的現(xiàn)象。 每個每個casecase或或defa

37、ultdefault后的語句可以是語句組,但后的語句可以是語句組,但不需要使用不需要使用“ ”和和“ ”括起來。括起來。語言程序設(shè)計41第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計多個多個casecase可以共用同一組執(zhí)行語句。可以共用同一組執(zhí)行語句。關(guān)鍵字關(guān)鍵字casecase和后面的常量表達式之間一定要有和后面的常量表達式之間一定要有空格??崭瘛?defaultdefault語句可以缺省也可以放在花括號內(nèi)的語句可以缺省也可以放在花括號內(nèi)的任意位置(不一定放在最后),如果缺省,而任意位置(不一定放在最后),如果缺省,而且所有且所有casecase后面的常量表達式的值與后面的常量表達式的值

38、與switchswitch后后面的表達式的值不等,則什么也不執(zhí)行,直接面的表達式的值不等,則什么也不執(zhí)行,直接退出退出switchswitch語句。語句。switchswitch結(jié)構(gòu)也可以嵌套,即在一個結(jié)構(gòu)也可以嵌套,即在一個switchswitch語語句中嵌套另一個句中嵌套另一個switchswitch語句。語句。語言程序設(shè)計42第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計(1)(1)首先計算首先計算switchswitch后面的一對小括號中的表達后面的一對小括號中的表達式的值。式的值。(2)(2)在在switchswitch語句體內(nèi)尋找與其相匹配的常量表語句體內(nèi)尋找與其相匹配的常量表達

39、式(值),如果找到了,則開始執(zhí)行其后面的達式(值),如果找到了,則開始執(zhí)行其后面的語句組,包括執(zhí)行其后的所有語句組,包括執(zhí)行其后的所有casecase和和defaultdefault中中的語句組,直到的語句組,直到switchswitch語句結(jié)束;如果沒有找到,語句結(jié)束;如果沒有找到,需要分兩種情況,一是有需要分兩種情況,一是有defaultdefault,則開始執(zhí)行,則開始執(zhí)行defaultdefault后面的語句,包括執(zhí)行后面的語句,包括執(zhí)行defaultdefault后面所有后面所有casecase中的語句組;二是沒有中的語句組;二是沒有defaultdefault,則跳過,則跳過swi

40、tchswitch語句體,去執(zhí)行語句體,去執(zhí)行switchswitch語句之后的其他語語句之后的其他語句。句。2.switch2.switch語句執(zhí)行過程語句執(zhí)行過程語言程序設(shè)計43第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計【例例4.74.7】用用switchswitch語句改寫例語句改寫例4.54.5#include#includevoid main()void main() int score; int score; printf(Input score:); printf(Input score:); scanf(%d,&score); scanf(%d,&scor

41、e); switch(score/10) switch(score/10) case 10: case 10: case 9: printf(The %d is belong to %cn, case 9: printf(The %d is belong to %cn, score,A); score,A); case 8: printf(The %d is belong to %cn, case 8: printf(The %d is belong to %cn, score,B); score,B); case 7: printf(The %d is belong to %cn, case

42、 7: printf(The %d is belong to %cn, score,C); score,C); case 6: printf(The %d is belong to %cn, case 6: printf(The %d is belong to %cn, score,D); score,D); default: printf(The %d is belong to %cn, default: printf(The %d is belong to %cn, score,E); score,E); 程序執(zhí)行結(jié)果為:程序執(zhí)行結(jié)果為:Input score:85Input score:

43、85 The 85 is belong to BThe 85 is belong to BThe 85 is belong to CThe 85 is belong to CThe 85 is belong to DThe 85 is belong to DThe 85 is belong to EThe 85 is belong to E語言程序設(shè)計44第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.4.2 4.4.2 在在switchswitch語句體中使用語句體中使用breakbreak語句語句breakbreak語句的作用是:跳出本層的語句的作用是:跳出本層的switchswitc

44、h語句。語句?!纠?.84.8】用用switchswitch語句和語句和breakbreak語句聯(lián)合改寫例語句聯(lián)合改寫例4.74.7#include#includevoid main()void main() int score; int score; printf(Input score:); printf(Input score:); scanf(%d,&score); scanf(%d,&score); switch(score/10) switch(score/10) case 10: case 10: case 9: printf(The %d is belong

45、to %cn, case 9: printf(The %d is belong to %cn, score,A);break; score,A);break; case 8: printf(The %d is belong to %cn, case 8: printf(The %d is belong to %cn, score,B); break; score,B); break; case 7: printf(The %d is belong to %cn, case 7: printf(The %d is belong to %cn, score,C); break; score,C);

46、 break; case 6: printf(The %d is belong to %cn, case 6: printf(The %d is belong to %cn, score,D); break; score,D); break; default: printf(The %d is belong to %cn, default: printf(The %d is belong to %cn, score,E); score,E); 程序運行結(jié)果:程序運行結(jié)果:Input score:85Input score:85 The 85 is belong to BThe 85 is be

47、long to BInput score:56Input score:56 The 56 is belong to EThe 56 is belong to E語言程序設(shè)計45第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計4.54.5程序舉例程序舉例【例例4.94.9】從鍵盤輸入兩個整數(shù),要求由小到大輸出從鍵盤輸入兩個整數(shù),要求由小到大輸出#include#includevoid main()void main() int a,b,t, int a,b,t,* *pa=&a,pa=&a,* *pb=&b;pb=&b;printf(Input a,b:);pri

48、ntf(Input a,b:);scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);if(ab)if(ab)t=t=* *pa;pa;* *pa=pa=* *pb;pb;* *pb=t;pb=t;printfprintf(“na=%d,b=%dnna=%d,b=%dn”, ,* *pa,pa,* *pbpb);); 程序運行結(jié)果:程序運行結(jié)果:Input a,b:5,3Input a,b:5,3 a=3,b=5 a=3,b=5 語言程序設(shè)計46第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計【例例4.104.10】從鍵盤輸入一個整數(shù),判斷

49、其是奇數(shù)還從鍵盤輸入一個整數(shù),判斷其是奇數(shù)還是偶數(shù)是偶數(shù)#include#includevoid main()void main() int x,y; int x,y; printf(Input x:); printf(Input x:); scanf(%d,&x); scanf(%d,&x); if(x%2=0) if(x%2=0) printf(%d is printf(%d is 偶數(shù)偶數(shù)n,x);n,x); else printf(%d is else printf(%d is 奇數(shù)奇數(shù)n,x);n,x); 程序運行結(jié)果:程序運行結(jié)果:Input x:5Input x:5 5 is 5 is 奇數(shù)奇數(shù)語言程序設(shè)計47第第4 4章章 分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計【例例4.114.11】分析下面的程序分析下面的程序#includevoid main() int a=2,b=-1,c=2; if(a+b) if(b0) c=0; else c+=1; printf(a=%d

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論