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

下載本文檔

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

文檔簡介

1、關(guān)系運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符種類: = !=結(jié)合方向:自左向右優(yōu)先級(jí)別:=!=優(yōu)先級(jí)6(高)優(yōu)先級(jí)7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達(dá)式值1/表達(dá)式值1/表達(dá)式值0/d=1/f=0語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)C關(guān)系運(yùn)算注意:例 若a=0; b=0.5; x=0.3; 則 a=x278在C中是允許的, 值為0例 int i=1, j=7,a; a=i+(j%4!=0); 則a=2例

2、 a0 結(jié)果為 A100 結(jié)果為10語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)C關(guān)系運(yùn)算注意:例 注意區(qū)分“=”與“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例 應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)1e-60語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)Cab!a!ba&ba|b真假真假假假真真邏輯運(yùn)算符和表達(dá)式邏輯運(yùn)算符種類: ! & |邏輯運(yùn)算真值表C語言中,運(yùn)算量: 0表示“假”, 非0表示“真”, 運(yùn)算結(jié)果

3、: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)C! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|ab優(yōu)先級(jí):結(jié)合方向:! :從右向左& :從左向右| :從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)C! (2)& (11)| (12)高低優(yōu)先級(jí):結(jié)合方向:! :從右向左& :從左向右| :從左向右例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2)|(8(4-(!0) 值為1語言程序設(shè)計(jì) 第五

4、章選擇結(jié)構(gòu)設(shè)計(jì)C! (2)& (11)| (12)高低優(yōu)先級(jí):結(jié)合方向:! :從右向左& :從左向右| :從左向右短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符例 a&b&c /只在a為真時(shí),才判別b的值; 只在a、b都為真時(shí),才判別 c的值例 a|b|c /只在a為假時(shí),才判別b的值; 只在a、b都為假時(shí),才判別 c的值例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/結(jié)果m=0,n=1語言程序設(shè)計(jì) 第五章選擇結(jié)構(gòu)設(shè)計(jì)C5.3 選擇型程序設(shè)計(jì)if語句(條件選擇語句)if語句的三種形式

5、形式一:格式:if (expression) statement執(zhí)行過程:exprstatement非0=0exprstatement1statement2非0=0形式二:格式:if (expression) statement1 else statement2執(zhí)行過程:例:if (xy) max=x; else max=y;形式三:格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn expr1statemnt1非0=0expr2expr3statem

6、ntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程: 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);說明:if后面的表達(dá)式類型任意語句可以是復(fù)合語句 if(x) if(x!=0) if(!x) if(x=0)例

7、 考慮下面程序的輸出結(jié)果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!/*ch4_1.c*/#include void main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if(yabsolute value:%dn,x,y);例 求一個(gè)數(shù)的絕對(duì)值運(yùn)行:Enter an integer:-12 integer:-12-absolute valu

8、e :12/*ch4_2.c*/#include void main() int a,b; printf(Enter integer a:); scanf(%d,&a); printf(Enter integer b:); scanf(%d,&b); if(a=b) printf(a=bn); else printf(a!=bn);例 輸入兩個(gè)數(shù)并判斷兩數(shù)相等否運(yùn)行:Enter integer a:12 Enter integer b:12 a=b 運(yùn)行:Enter integer a:12 Enter integer b:9 a!=b /*ch4_3.c*/#include void mai

9、n() char c; printf(Enter a character:); c=getchar(); if(c=0&c=A&c=a&c=z) printf(The character is a lower lettern); else printf(The character is other charactern);例 判斷輸入字符種類運(yùn)行:Enter a character: The character is a control character運(yùn)行:Enter a character:8 The character is a digit運(yùn)行: Enter a character:

10、D The character is a capital letter運(yùn)行: Enter a character: h The character is a lower letter運(yùn)行: Enter a character: The character is other characterif語句嵌套:一般形式:if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4內(nèi)嵌if內(nèi)嵌ifif (expr1) if (expr2) statement1 else stateme

11、nt2內(nèi)嵌ifif (expr1) if (expr2) statement1else statement3 內(nèi)嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內(nèi)嵌if例 輸入兩數(shù)并判斷其大小關(guān)系/*ch4_4.c*/#include void main() int x,y; printf(Enter integer x,y:); scanf(%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);運(yùn)行:Ente

12、r integer x,y:12,23 XY Enter integer x,y:12,12 X=Yif else 配對(duì)原則:缺省 時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì)if()if()if()else.else.else.例: if (a= =b) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);修改: if (a= =b) if(b= =c) printf(“a= =b= =c”); else printf(“a!=b”);實(shí)現(xiàn)if else 正確配對(duì)方法:加 例 分析下面程序輸出結(jié)果: void main() int x=

13、100,a=10,b=20; int v1=5,v2=0; if(ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取expr2值取expr3值非0=0例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d)expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型例 x?a:b /x=0,表達(dá)式值為b; x0,表達(dá)式值為a xy?1:1

14、.5 /xy ,值為1.0; x60n”); break; .例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 運(yùn)行結(jié)果:score為5時(shí),輸出: Very good! Good! Pass! Fail! data error!例 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 運(yùn)行結(jié)果:a=2,b=1/*ch4_5.c*/#include void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論