版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章 選擇結(jié)構(gòu)程序設(shè)計(jì) 選擇結(jié)構(gòu)的作用:根據(jù)所給定的條件是否滿足,決定兩組不同的操作。C語言中的選擇結(jié)構(gòu)是用IF語句實(shí)現(xiàn)的。形式:if(關(guān)系表達(dá)式)語句1eise語句2例如:if(X0)Y=1elseY=-15.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算是將兩值進(jìn)行比較,根據(jù)兩值和所進(jìn)關(guān)系運(yùn)算是將兩值進(jìn)行比較,根據(jù)兩值和所進(jìn)行的比較運(yùn)算給出一個(gè)邏輯值(真、假)。例行的比較運(yùn)算給出一個(gè)邏輯值(真、假)。例如:如:38,也是一,也是一個(gè)關(guān)系表達(dá)式,它永遠(yuǎn)不成立,所以其值為假。個(gè)關(guān)系表達(dá)式,它永遠(yuǎn)不成立,所以其值為假。 一、關(guān)系運(yùn)算符及優(yōu)先次序一、關(guān)系運(yùn)算符及優(yōu)先次序 , =, , a+b=c(a+b)
2、 ab=c=(ab)=c a=ba=(bc) a=ba=(bbc=(ab)c 5.1.2 關(guān)系表達(dá)式 定義:用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)表定義:用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子,式、字符表達(dá)式)連接起來的式子,稱為關(guān)稱為關(guān)系表達(dá)式。系表達(dá)式。 ab, a+bb+c, (a=3)(b=5), ab)(bb為真為真“1”,ab= =c也為真也為真“1”, b+cb 所以所以d=1 f=abc 所以所以 f=0 因?yàn)橐驗(yàn)椤啊边\(yùn)算符是自左至右的結(jié)合運(yùn)算符是自左至右的結(jié)合方式。先執(zhí)行方式。先執(zhí)行“
3、ab”得值為得值為1,再執(zhí)行,再執(zhí)行“1c”得值得值0,賦給,賦給f。關(guān)系表達(dá)式就象: 例如:例如: 明天下雨嗎?(明天下雨嗎?(x) 下雨(下雨(a) 不下雨(不下雨(b)判斷判斷x= =a?或或x= =b? 明天刮風(fēng)嗎?(明天刮風(fēng)嗎?(x) 刮風(fēng)(刮風(fēng)(c) 不刮風(fēng)(不刮風(fēng)(d)判斷判斷x= =c?或或x= =d? 要表示明天不下雨也不刮風(fēng)要表示明天不下雨也不刮風(fēng)即判斷即判斷x= =b和和x= =d同時(shí)成立,即兩關(guān)系表達(dá)同時(shí)成立,即兩關(guān)系表達(dá)式之間有聯(lián)系,怎么表示?式之間有聯(lián)系,怎么表示? (x= =b)&(x= =d)或)或!(x= =a&x= =c)5.2 邏輯運(yùn)算符和
4、邏輯表達(dá)式 我們看到只有關(guān)系運(yùn)算符是不能將我們看到只有關(guān)系運(yùn)算符是不能將事物描述清楚的,必須要再設(shè)置一類運(yùn)事物描述清楚的,必須要再設(shè)置一類運(yùn)算符來對(duì)關(guān)系表達(dá)式進(jìn)行運(yùn)算,這就是算符來對(duì)關(guān)系表達(dá)式進(jìn)行運(yùn)算,這就是我們這節(jié)課要講的我們這節(jié)課要講的邏輯運(yùn)算邏輯運(yùn)算。5.2.1 邏輯運(yùn)算符及其優(yōu)先次序邏輯運(yùn)算符及其優(yōu)先次序C語言提供三種邏輯運(yùn)算符:語言提供三種邏輯運(yùn)算符:&邏輯與(AND)|邏輯或(OR)!邏輯非(NOT)邏輯與:邏輯或:邏輯非:邏輯運(yùn)算邏輯運(yùn)算結(jié)果結(jié)果NOT NOT 真真假假NOT NOT 假假真真 一、邏輯運(yùn)算符及其優(yōu)先級(jí)一、邏輯運(yùn)算符及其優(yōu)先級(jí) ?。ǚ牵。ǚ牵?高高 算術(shù)
5、運(yùn)算符算術(shù)運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 &和和| | 賦值運(yùn)算符賦值運(yùn)算符 低低 其中其中&和和| |是雙目運(yùn)算符,而!是單目運(yùn)是雙目運(yùn)算符,而!是單目運(yùn)算符算符。邏輯運(yùn)算符優(yōu)先次序:!(非)&(與)|(或)如:如:a&b 若若 a、b為真,則為真,則a&b 為真。為真。 a|b 若若 a、b之一為真,則之一為真,則 a|b為真。為真。 !a 若若 a為真為真 , 則!則!a為假。為假。 1、邏輯、邏輯“與與”相當(dāng)于相當(dāng)于“并且并且”,在,在 兩條件都成立時(shí)才為真。兩條件都成立時(shí)才為真。 2、邏輯、邏輯“或或”相當(dāng)于相當(dāng)于“或者或者”,兩,兩 條件有一條
6、滿足即可。條件有一條滿足即可。 3 、 邏 輯、 邏 輯 “ 非非 ” 相 當(dāng) 于相 當(dāng) 于 “ 否否 ” 、“不不”。 1*1=11*0=00*1=00*0=0 1+1=11+0=10+1=10+0=05.2.2 邏輯表達(dá)式邏輯表達(dá)式 用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就是邏輯表達(dá)式。接起來的式子就是邏輯表達(dá)式。 1、邏輯表達(dá)式的值只有兩個(gè):、邏輯表達(dá)式的值只有兩個(gè): 真(真(1)、)、 假(假(0) 2、而在判斷一個(gè)量真假時(shí)原則如下:、而在判斷一個(gè)量真假時(shí)原則如下: 0為假,為假,非非0為真。為真。例如:例如:53&2|8b)&
7、(xy) = ab&xy(a= =b)|(x= =y) = a= =b|x= =y(!a)|(ab) = !a|ab*注意:邏輯求解時(shí),并不是所有的邏注意:邏輯求解時(shí),并不是所有的邏輯運(yùn)算符都被執(zhí)行。輯運(yùn)算符都被執(zhí)行。1、對(duì)于對(duì)于&來說,左邊為來說,左邊為1(真)才去(真)才去算右邊的值,否則即為算右邊的值,否則即為0。如:如:a&b&c,先判斷,先判斷a的值為的值為1才判斷才判斷 b,為為1才判斷才判斷c,只要有一個(gè)值為只要有一個(gè)值為0則為則為0。2、對(duì)于對(duì)于|來說,左邊為來說,左邊為0(假)才算右邊(假)才算右邊值,否則為值,否則為1 a|b|c, 先判斷先
8、判斷a的值,為的值,為0才判斷才判斷b,為,為0才才 判斷判斷c,只要有一個(gè)值為,只要有一個(gè)值為1則為則為1。 若若a=1,b=2,c=3,d=4,m=n=1, (m=ab)&(n=cd) 求求m,n的值是多少?的值是多少?m=0,n=1 請(qǐng)看請(qǐng)看如下程序:如下程序: main( ) int x,y,z; x=1;y=1;z=1; if (x=2)&(y=2)&(z=2); printf(“%d,%d,%dn”,x,y,z); 1,1,1 x=1;y=1;z=1; if (x=0)&(y=2)&(z=2); printf(“%d,%d,%dn”,x,y,
9、z); 1,1,1 請(qǐng)看請(qǐng)看如下程序:如下程序: x=1;y=1;z=1; if (x=2)|(y=2)|(z=2); printf(“%d,%d,%dn”,x,y,z); 2,1,1 x=1;y=1;z=1; if (x=0)|(y=2)|(z=2); printf(“%d,%d,%dn”,x,y,z); 0,2,1 x=1;y=1;z=1; if (x=0)&(y=2)|(z=2); printf(“%d,%d,%dn”,x,y,z); 0,1,2 5.3 if語句 5.3.1 if 語句有以下三語句有以下三 種形式:種形式: 1、 if(表達(dá)式)(表達(dá)式)語句語句 else 語句
10、語句 當(dāng)條件成立時(shí)執(zhí)行語句,條件不成當(dāng)條件成立時(shí)執(zhí)行語句,條件不成 立時(shí)執(zhí)行語句。立時(shí)執(zhí)行語句。 注意:注意: (1)(表達(dá)式)是個(gè)邏輯表達(dá)式,兩邊)(表達(dá)式)是個(gè)邏輯表達(dá)式,兩邊 必須必須 有括號(hào)()。有括號(hào)()。 (2)語句和語句是)語句和語句是if 的內(nèi)嵌語句,與的內(nèi)嵌語句,與 if 看成一條語句??闯梢粭l語句。(3)若語句、不只是一個(gè)語句,)若語句、不只是一個(gè)語句, 而是多句,則須用而是多句,則須用 括起來。括起來。 (4)else 語句可以省略。語句可以省略。 (5)else總是和它上面的總是和它上面的if (未曾配未曾配 對(duì)的對(duì)的)相匹配的。相匹配的。 例如:例如:if (xy)
11、printf(“%d”,x); else printf”%d”,y); 例如例如:if (3) printf(“OK”); if (xy) printf(“%d”,x); else printf(“%d”,y); if (xy)&(xz) max=x; printf(“%d”,x); else if (yx)&(yz) max=y; printf(“%d”,y); else max=z; printf(“%d”,z); 2、if (表達(dá)式) 語句例如:if(xy)printf(“%d”,x);3、if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3
12、elseif(表達(dá)式m)語句melse語句n例5.1 輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。 main( ) float a,b,c,t; scanf(“%f,%f,%f”,&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(“%5.2f,%5.2f,%5.2f”,a,b,c);5.3.2 if語句的嵌套5.3.3 條件運(yùn)算符 在使用在使用if 語句時(shí),有時(shí)在條件成立或不成語句時(shí),有時(shí)在條件成立或不成立時(shí)都只執(zhí)行一條對(duì)同一個(gè)變量的賦值語句,立時(shí)都只執(zhí)行
13、一條對(duì)同一個(gè)變量的賦值語句,只是值不同而矣。這時(shí)就可以使用條件運(yùn)算符。只是值不同而矣。這時(shí)就可以使用條件運(yùn)算符。 格式:格式:(表達(dá)式一)?表達(dá)式二:表達(dá)式三(表達(dá)式一)?表達(dá)式二:表達(dá)式三 if (ab) max=a; else max=b; max=(ab)?a:b 條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,但低于關(guān)系、算術(shù)運(yùn)算符,算符,但低于關(guān)系、算術(shù)運(yùn)算符,結(jié)合性是從右至左的。結(jié)合性是從右至左的。 xy?x:zd?z:d = xy?x:(zd?z:d) xy?x:y+2 = (xy)?x:(y+2) 在進(jìn)行混合運(yùn)算時(shí):在進(jìn)行混合運(yùn)算時(shí): xy?1:1.5 當(dāng)當(dāng)xy時(shí)
14、,表達(dá)式的值為時(shí),表達(dá)式的值為1,由于由于1.5是實(shí)型是實(shí)型,因此因此,將將1轉(zhuǎn)換成實(shí)型值轉(zhuǎn)換成實(shí)型值1.0。 當(dāng)當(dāng)x=A&ch=Z)?(ch+32):ch; printf(“%c”,ch); 5.4 switch語句(多分支選擇) 上次課講的上次課講的if 語句是有兩個(gè)選擇語句是有兩個(gè)選擇的分支語句,而的分支語句,而switch語句是用來表語句是用來表示多分支的選擇結(jié)構(gòu)。示多分支的選擇結(jié)構(gòu)。 例如:例如: 統(tǒng)計(jì)學(xué)生各分?jǐn)?shù)段人數(shù),各分?jǐn)?shù)段統(tǒng)計(jì)學(xué)生各分?jǐn)?shù)段人數(shù),各分?jǐn)?shù)段的等級(jí),按人口年齡統(tǒng)計(jì)人數(shù),按的等級(jí),按人口年齡統(tǒng)計(jì)人數(shù),按公里數(shù)收費(fèi)等問題。公里數(shù)收費(fèi)等問題。格式: switch(表
15、達(dá)式表達(dá)式) case 常量表達(dá)式常量表達(dá)式1:語句:語句1 case 常量表達(dá)式常量表達(dá)式2:語句:語句2 : : : case 常量表達(dá)式常量表達(dá)式n:語句:語句n default: 語句語句n+1 注意: 1、switch后表達(dá)式可以為整型、字符型等。后表達(dá)式可以為整型、字符型等。 2、每個(gè)、每個(gè)case后常量表達(dá)式只能是常量組成后常量表達(dá)式只能是常量組成 的表達(dá)式。當(dāng)?shù)谋磉_(dá)式。當(dāng)switch后表達(dá)式值與某一后表達(dá)式值與某一 常量表達(dá)式值一致時(shí),則執(zhí)行此常量表達(dá)式值一致時(shí),則執(zhí)行此case后后 語句。如無一常量表達(dá)式值與語句。如無一常量表達(dá)式值與 switch 值一致,則執(zhí)行值一致,則執(zhí)
16、行default后的語句。后的語句。 3、每個(gè)、每個(gè)case語句后常量表達(dá)式值不應(yīng)一語句后常量表達(dá)式值不應(yīng)一 致致, 否則程序會(huì)出錯(cuò)。否則程序會(huì)出錯(cuò)。注意:注意: 4、case語句的次序不影響執(zhí)行結(jié)果,語句的次序不影響執(zhí)行結(jié)果, 一般情況下盡量使出現(xiàn)機(jī)率大的一般情況下盡量使出現(xiàn)機(jī)率大的 case放在前面。放在前面。 5、執(zhí)行了一個(gè)、執(zhí)行了一個(gè)case語句后,程序就會(huì)語句后,程序就會(huì) 執(zhí)行以下執(zhí)行以下case的以及的以及default的語句,的語句, 除非遇到了除非遇到了break語句停止語句停止,執(zhí)行執(zhí)行switch 以后的語句。以后的語句。 6、default 這一行可以省略。這一行可以省略
17、。 7、多個(gè)、多個(gè)case可以共用一段程序??梢怨灿靡欢纬绦?。例:輸入一個(gè)學(xué)生的成績,打印出相應(yīng)的等級(jí)。 程序如下程序如下: main( ) float grade; int x; scanf(“%f”,&grade); x=grade/10; switch(x)case 10:case 9:printf(“A”);break;case 8:printf(“B”);break;case 7:printf(“C”);break;case 6:printf(“D”);break;default:printf(“E”);練習(xí)題: 1、寫出程序輸出、寫出程序輸出結(jié)果:結(jié)果: main( ) i
18、nt a=100,x=10,y=20,ok1=5,ok2=0; if(xy) if(y!=0) if(!ok1) a=1; else if(ok2) a=10; a=-1; printf(“%dn”,a); 結(jié)果是:結(jié)果是:-1 2、 main( ) int x=2,y=-1,z=2; if(xy) if(y12?x+10:x-12; printf(“%dn”,y); 輸入為:輸入為:3結(jié)果為:結(jié)果為:-9 4、 main( ) int a=-1,b=3,c=3,s=0,w=0,t=0; if(c0) s=a+b; if(a0) if(c0) w=a-b; else t=c; printf(“
19、%d,%d,%d”,s,w,t); 結(jié)果為結(jié)果為:2,0,0 5、 main( ) int a=2,b=7,c=5; switch(a0) case 1:switch(b0 D=0 D0 打印打印 x1=(-b+SQR(D)/(2*a) x2=(-b-SQR(D)/(2*a) 打印打印 x1=x2= - b/(2*a) 打印無實(shí)根打印無實(shí)根有兩個(gè)共輒有兩個(gè)共輒復(fù)根復(fù)根 程序如下程序如下: #include main( ) float a,b,c,disc,x1,x2,realpart,imagpart; scanf(“%f,%f,%f”,&a,&b,&c); print
20、f(“The equation”); if(fabs(a)=1e-6) printf(“is not quadratic”); 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(“has distinct real roots:%8.4fand %8.4fn”,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(“has complex roots:n”); printf(
21、“%8.4f+%8.4fin”,realpart,imagpart); printf(“%8.4f-%8.4fin”,realpart,imagpart); 例例5、7 運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下: s250km 沒有折扣沒有折扣 250s500 2%折扣折扣 500s1000 5%折扣折扣 1000s2000 8%折扣折扣 2000s=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: case 6: case 7:d=8;break; c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度泥工施工工程結(jié)算與審計(jì)合同3篇
- 二零二五年度打印機(jī)租賃及安裝調(diào)試合同3篇
- 二零二五年度水電安裝工程質(zhì)量監(jiān)理合同書4篇
- 二零二五年度出口企業(yè)出口貨物出口許可證與憑證制作合同3篇
- 二零二四年廢鐵貿(mào)易與市場(chǎng)拓展合作框架合同3篇
- 2025年度水利工程碎石材料采購及施工監(jiān)理合同3篇
- 2025年度門窗加工車間環(huán)保設(shè)施建設(shè)與運(yùn)營合同4篇
- 二零二五年度模板工建筑工程安全防護(hù)合同范本(含風(fēng)險(xiǎn)評(píng)估)3篇
- 2025年度綠色環(huán)保瓷磚批量供貨及安裝一體化服務(wù)合同4篇
- 二零二四年度園林綠化工程設(shè)計(jì)、施工、養(yǎng)護(hù)一體化合同3篇
- GB 19053-2024殯儀場(chǎng)所致病菌安全限值
- 綠化養(yǎng)護(hù)難點(diǎn)要點(diǎn)分析及技術(shù)措施
- 2024年河北省高考?xì)v史試卷(含答案解析)
- 車位款抵扣工程款合同
- 2023年湖北省襄陽市中考數(shù)學(xué)真題(原卷版)
- 小學(xué)六年級(jí)數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試參考試題庫(含答案)
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員24人筆試參考題庫(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說明書MSDS
- 母嬰護(hù)理員題庫
評(píng)論
0/150
提交評(píng)論