第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制_第1頁(yè)
第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制_第2頁(yè)
第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制_第3頁(yè)
第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制_第4頁(yè)
第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第五章第五章 邏輯運(yùn)算和選擇結(jié)構(gòu)控制邏輯運(yùn)算和選擇結(jié)構(gòu)控制本章要點(diǎn):u正確使用邏輯表達(dá)式u掌握用if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)u掌握條件運(yùn)算符的使用25. 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式語(yǔ)言中的關(guān)系運(yùn)算符有種。5.1.1 關(guān)系運(yùn)算符及其優(yōu)先次序 、!、!優(yōu)先次序:前種同級(jí),高于后種(后種同級(jí))例如: x != y s - db+c bd 算術(shù)運(yùn)算符 (高)關(guān)系運(yùn)算符賦值運(yùn)算符 (低)(s-d)(b+c)(bd)3 5.1.2 關(guān)系表達(dá)式 關(guān)系表達(dá)式就是將兩個(gè)表達(dá)式用關(guān)系運(yùn)算符連接起來(lái)。 如:(ab)(bc) 、ay 、s+fd 語(yǔ)言沒(méi)有邏輯型數(shù)據(jù),關(guān)系表達(dá)式的真、假是以 數(shù)值“”代表“真

2、”,以“”代表“假”。 例: a=3, b=2, c=1 , 下列表達(dá)式的值是? cb; (a-b) = = 1; b+cbc; (自左至右 )4 用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)就是邏輯表達(dá)式。 5.2.1 邏輯運(yùn)算符及其優(yōu)先次序 C語(yǔ)言提供三種邏輯運(yùn)算符: & (邏輯與) 、 | (邏輯或) 、! (邏輯非)注注:“&”和“| ”是“雙目(元)運(yùn)算符”,它要求有兩個(gè)運(yùn)算量操作數(shù)。而“! ”是“單目(元)運(yùn)算符”,只要求有一個(gè)運(yùn)算量。 如:a&b+c 、 (ab)|(xy) 、!(x3 & 2 | 84!0 值為:“?” b&d 值為:“? ”

3、 例2:判別某一年year是否閏年。 條件: 能被整除,但不能被100整除?;蚰鼙徽?除,又能被400整除。判斷閏年的邏輯表達(dá)式為: (year % 4= =0 & year % 100!0)| year % 400= =0判斷非閏年的邏輯表達(dá)式為: (year % 4!= 0) | (year % 100 = = 0 & year % 400 != 0)6If語(yǔ)句用來(lái)判定給定的條件是否滿(mǎn)足,根據(jù)判定的結(jié)果決定執(zhí)行下面給出的語(yǔ)句.5.3.1 if 語(yǔ)句的三種形式 . if(表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句 例: if(xy) printf(“ %d ”, x); else printf

4、(%d,y);5 5.3 if 語(yǔ)語(yǔ) 句句73. if(表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句 1 else if(表達(dá)式表達(dá)式2) 語(yǔ)句語(yǔ)句 2 else if(表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句 3 else if(表達(dá)式表達(dá)式m) 語(yǔ)句語(yǔ)句 m else 語(yǔ)句語(yǔ)句 n 注: 上述格式中語(yǔ)句可以表示一個(gè)語(yǔ)句或多個(gè)語(yǔ)句, 若多個(gè)語(yǔ)句則用 括起來(lái)。 例: 求010001)(xxxxsign8#include main( ) int numb1, sign; printf(“Please input an numbern”); scanf(“%d”,&numb1); if (numb10) sign = 1;

5、 else if(numb1= = 0) sign = 0; else sign = 1; printf(“sign(x)=%dn”,sign); 注: 最后else與其之最近的if配對(duì)。9或 if( ) if( ) 語(yǔ)句語(yǔ)句 (內(nèi)嵌if ) else 語(yǔ)句語(yǔ)句 2 內(nèi)嵌if 內(nèi)嵌if 或 if( ) if( ) 語(yǔ)句語(yǔ)句 else if( ) 語(yǔ)句語(yǔ)句2 else 語(yǔ)句語(yǔ)句3if( ) if( ) 語(yǔ)句語(yǔ)句 else 語(yǔ)句語(yǔ)句else if( ) 語(yǔ)句語(yǔ)句 else 語(yǔ)句語(yǔ)句 內(nèi)嵌if5.3.2 if語(yǔ)句的嵌套語(yǔ)句的嵌套 在在if語(yǔ)句中又包含一個(gè)或多個(gè)語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句的形式。語(yǔ)

6、句的形式。一般格式如下:10例如例如: 已知 編一個(gè)程序,輸入一個(gè) x的值,輸出y值。010001)(xxxxy程序?yàn)椋?main( ) int x, y; scanf(“%d”,&x); if(x=0) if(x0) y=1; else y=0; else y= -1;內(nèi)嵌if若程序?qū)懗? y= -1 if(x!=0) if(x0) y=1; else y= 0; 正確嗎? 如何修改? 或者 y= 0; if(x= 0) if(x0) y= 1; else y= -1; 正確嗎? 如何修改?if (X=0)if (X!=0)125.3.3 條件運(yùn)算符條件運(yùn)算符語(yǔ)言增設(shè)了一個(gè)條件操作符

7、,它是唯一的三目操作符。格式: 表達(dá)式表達(dá)式 ?表達(dá)式:表達(dá)式?表達(dá)式:表達(dá)式功能: 判斷表達(dá)式的值,該值為“非”,則取表達(dá)式2 的值, 為“ 0 ”時(shí),取表達(dá)式的值。如: max=ab ? a : b 若 a=3, b=2, 則 max=說(shuō)明: (1) 條件運(yùn)算符優(yōu)于賦值運(yùn)算符。 (2) 條件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆薄?例1:當(dāng)a=1,b=2,c=3, d=4 時(shí), 表達(dá)式 ab ? a : cd ? c : d , 值為:? 例2: 若 x=1,y=0,a=3,b=-3 表達(dá)式 (yx?a:b)&a+b 值為? 4013(3)可以用條件表達(dá)式取代一般的if結(jié)構(gòu)語(yǔ)句。如:if(

8、ab) printf(“%d”,a); else printf(“%d”,b); printf(“%d”,ab ? a : b); (4) 條件表達(dá)式中的表達(dá)式的類(lèi)型可以與表達(dá)式和表達(dá)式的類(lèi)型不同。如: c=xy ? 1 : s , 當(dāng)xy成立時(shí)c=1, 否則c= s。又如: main( ) char ch; scanf(“%c”, &ch); ch= (ch= A& ch= Z)? (ch+32) : ch; printf(“%c”, ch) 輸入 a 14uswitch語(yǔ)句 問(wèn)題:為什么引出switch語(yǔ)句? 該語(yǔ)句為開(kāi)關(guān)語(yǔ)句,解決多分支的情況。格式:switch(表達(dá)式)

9、表達(dá)式) case (常量表達(dá)式):語(yǔ)句塊常量表達(dá)式):語(yǔ)句塊; case (常量表達(dá)式):語(yǔ)句塊常量表達(dá)式):語(yǔ)句塊; case (常量表達(dá)式常量表達(dá)式m):語(yǔ)句塊):語(yǔ)句塊m; default :語(yǔ)句塊:語(yǔ)句塊n; 說(shuō)明說(shuō)明:(1) 表達(dá)式可以是整型、字符型、枚舉數(shù)據(jù)型 的表達(dá)式。 5.4 switch 語(yǔ)句和語(yǔ)句和break語(yǔ)句語(yǔ)句15 (2) 計(jì)算表達(dá)式的值; (3) 找到與表達(dá)式的值相同的case常量表達(dá)式,執(zhí)行該case后邊的語(yǔ)句塊,之后依次往下執(zhí)行語(yǔ)句塊依次往下執(zhí)行語(yǔ)句塊。例如:例如: switch(grade) case A : printf(“85100、”); case B

10、 : printf(“7084、”); case C: printf(“6069n”); case D :printf(“60、”); default : printf(“error ”); 若gread= A時(shí),結(jié)果為: 85100、7084、6069 60、error16 如果不想這樣輸出,則可用break語(yǔ)句處理。ubreak語(yǔ)句:格式: break ;功能:終止與每一個(gè)常量有關(guān)的語(yǔ)句序列,省略它則繼續(xù)執(zhí)行下一個(gè)case后的語(yǔ)句塊。上述程序可寫(xiě)成多分支情況: switch( grade ) case A : printf(“85100n”); break; case B : printf

11、(“7084n”); break; case C: printf(“6069n”); break; case D :printf(“60n”); break; default : printf(“error ”); 若gread= A時(shí),輸出結(jié)果為?當(dāng) grad= B時(shí),輸出結(jié)果為: 70 8417流程圖為: grade輸出 “85100”輸出 “=3000) c=12; else c= s / 250; switch( c ) case 0: d=0 ; break ; case 1: d=2 ; break ; case 2: case 3: d=5; break; case 4: case 5:21 case 6: case7: d=8 ; break ; case8: case9: case10: case11: d=10 ; break ; case12: d=15 ; break

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論