版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章選擇結(jié)構(gòu)程序設(shè)計(jì)-2-關(guān)系運(yùn)算符與關(guān)系表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式條件運(yùn)算符與條件表達(dá)式if語句switch語句選擇結(jié)構(gòu)程序舉例本章教學(xué)內(nèi)容本章教學(xué)目標(biāo)能熟練正確地使用關(guān)系運(yùn)算符和關(guān)系表達(dá)式。掌握C語言的邏輯運(yùn)算符和邏輯表達(dá)式,學(xué)會表示邏輯值的方法。熟練掌握if語句的三種形式,掌握選擇結(jié)構(gòu)程序設(shè)計(jì)的方法及應(yīng)用。熟悉多分支選擇switch 語句編程。能熟練地運(yùn)用if語句和switch語句進(jìn)行選擇結(jié)構(gòu)綜合編程。-3-4-4.1關(guān)系運(yùn)算符與關(guān)系表達(dá)式在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,在C語言中,“ 比較運(yùn)算”就是“關(guān)系運(yùn)算”,關(guān)系運(yùn)算就是比較兩個(gè)量的大小關(guān)系。 例如,x7是一個(gè)關(guān)系表達(dá)式,
2、其中的“”是一個(gè)關(guān)系 運(yùn)算符。 若x的值是5,則表達(dá)式57成立,表達(dá)式的值為“真”。 若x的值是9,則表達(dá)式9c+d (a+b)(c+d) a=b=c a=(b=c) a=b!=c a=(b!=c-7-關(guān)系表達(dá)式 關(guān)系表達(dá)式是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來,進(jìn)行關(guān)系運(yùn)算的式子。被連接的表達(dá)式可以是算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式或字符表達(dá)式。 例如,下面都是合法的關(guān)系表達(dá)式: a=bb!=c (ab)d) 關(guān)系運(yùn)算的結(jié)果是整數(shù)值0或者1。在C語言中,沒有專門的“邏輯值”,而是用0代表“假”,用1代表“真”。-8-關(guān)系表達(dá)式 說明:從本質(zhì)上來說,關(guān)系運(yùn)算的結(jié)果不是數(shù)值,而是邏輯值
3、,為了處理關(guān)系運(yùn)算和邏輯運(yùn)算的結(jié)果,C語言指定1代表真,0代表假。用了1和0代表真和假,而1和0又是數(shù)值,所以在C程序中還允許把關(guān)系運(yùn)算的結(jié)果看作和其他數(shù)值型數(shù)據(jù)一樣,可以參加數(shù)值運(yùn)算,或者把它賦值給數(shù)值型變量。如下: f=63 (先計(jì)算關(guān)系表達(dá)式63,得到1,再將1賦值給變量f,故f的值為1)。 f=543 (先計(jì)算關(guān)系表達(dá)式54,得到1,再計(jì)算關(guān)系表達(dá)式13,得到0,再將0賦值給變量f,故f的值為0)。 f=5!=6 (先計(jì)算關(guān)系表達(dá)式5!=6,得到1,再將1賦值給變量f,故f的值為1)。-9-4.2邏輯運(yùn)算符與邏輯表達(dá)式 在編程過程中,常常需要表示出由幾個(gè)簡單條件組成的復(fù)合條件。例如,參
4、加本次奧林匹克數(shù)學(xué)競賽的學(xué)生的年齡必須在13歲到16歲之間,要表示滿足條件的參賽學(xué)生的年齡,用數(shù)學(xué)表達(dá)式可以寫成13=age=13和age3)&(67) 運(yùn)算結(jié)果是0(邏輯假)2.邏輯或(|) 其運(yùn)算規(guī)則為:當(dāng)|左右兩邊的操作數(shù)有一個(gè)為非0(邏輯真)時(shí),運(yùn)算結(jié)果就為1(邏輯真),否則為0(邏輯假)。 例如:54|43 邏輯表達(dá)式的結(jié)果是1(邏輯真) 68 邏輯表達(dá)式的結(jié)果是0(邏輯假)。-12-4.2.1 邏輯運(yùn)算符及其優(yōu)先級3. 邏輯非(!) 其運(yùn)算規(guī)則為:當(dāng)!左邊的操作數(shù)為1(邏輯真)時(shí),邏輯非運(yùn)算的結(jié)果為0(邏輯假);當(dāng)!左邊的操作數(shù)為0(邏輯假)時(shí),邏輯非運(yùn)算的結(jié)果為1(邏輯真)。 例
5、如:!(56)邏輯表達(dá)式的結(jié)果為0(邏輯假)。 若a=8,則!a的值為0(邏輯假)。 上述3種邏輯運(yùn)算符的優(yōu)先級次序是: !(邏輯非)級別最高 &(邏輯與)次之 |(邏輯或)最低-13-4.2.2 邏輯表達(dá)式 用邏輯運(yùn)算符將表達(dá)式連接起來就構(gòu)成了邏輯表達(dá)式。邏輯表達(dá)式的運(yùn)算結(jié)果為1(邏輯真)或0(邏輯假)。 例如: 若a=5,b=2, 邏輯表達(dá)式!a&b7的值為0。 邏輯表達(dá)式!7.3&8 的結(jié)果為0。 邏輯表達(dá)式!5|4.5的結(jié)果為1。 “abc”&“defg”的結(jié)果為1。-14-4.2.2 邏輯表達(dá)式 在實(shí)際編程過程中,有時(shí)也需要把數(shù)學(xué)表達(dá)式轉(zhuǎn)換成C語言的邏輯表達(dá)式形式,例如:(1)數(shù)學(xué)表
6、達(dá)式abc寫成合法的C語言表達(dá)式形式為 ab&b6 寫成合法的C語言邏輯表達(dá)式形式為 x6|xa)|(m=a); 求變量m, n, k的最終值。4.2.2 邏輯表達(dá)式4.3 條件運(yùn)算符與條件表達(dá)式 條件表達(dá)式的一般形式為: 表達(dá)式1?表達(dá)式2:表達(dá)式3 運(yùn)算規(guī)則:先求解表達(dá)式1的值,若表達(dá)式1的值為真(非0的值),則求表達(dá)式2的值,并把表達(dá)式2的值作為整個(gè)表達(dá)式的值;若表達(dá)式1的值為假(為0值),則求表達(dá)式3的值,并把表達(dá)式3的值作為整個(gè)表達(dá)式的值。 例如: (1) 若int a=3,b=4;mmx=ab?a+2:b+3;則mmx的值為7。 (2) 若int a=3,b=5,c=2,d=3;
7、mmx=ab?a:cd?c:d后,mmx的 值為3。(條件運(yùn)算符是右結(jié)合性)。 -16-4.3 條件運(yùn)算符與條件表達(dá)式 【例題4-1】條件表達(dá)式應(yīng)用示例。 編寫程序:從鍵盤輸入3個(gè)整數(shù)a,b,c, 輸出其中最大的數(shù)(用條件表達(dá)式實(shí)現(xiàn))。 #include int main( ) int a,b,c,temp,max; printf(“please input a,b,c:”); scanf(“%d,%d,%d”,&a, &b,&c); temp=(ab)?a:b; max=(tempc)?temp:c; printf(“max=%dn”,max); return 0; 圖4-1 例題4-1運(yùn)行
8、結(jié)果 -17-4.4 if語句 C語言編程時(shí),有時(shí)需要使程序根據(jù)條件有選擇地執(zhí)行語句。C語言有兩種選擇語句: (1)if語句,有3種形式,分別是單分支選擇if語句、雙分支選擇if語句和多分支選擇if語句。 (2)switch語句,用來實(shí)現(xiàn)多分支的選擇結(jié)構(gòu)。本節(jié)先介紹if語句的3種形式,然后在此基礎(chǔ)上介紹if語句的嵌套結(jié)構(gòu)。-18-1.單分支if語句 單分支if語句的形式為: if(表達(dá)式) 語句; 單分支if語句的執(zhí)行過程:當(dāng)表達(dá)式的值為非0(邏輯真)時(shí),則執(zhí)行其后的語句;否則不執(zhí)行該語句。2.雙分支if語句 雙分支if語句的形式為: if(表達(dá)式1) 語句1; else 語句2; 雙分支if
9、語句的執(zhí)行過程:當(dāng)表達(dá)式1的值為非0(邏輯真)時(shí),則執(zhí)行語句1;否則執(zhí)行語句2。-19-4.4.1 if語句的三種形式4.4.1 if語句的三種形式3.多分支if語句 多分支if語句適用于有3個(gè)或3個(gè)以上的分支選擇時(shí),一般形式為: if(表達(dá)式1) 語句1; else if(表達(dá)式2) 語句2; else if(表達(dá)式3) 語句3; else if(表達(dá)式n) 語句n; else 語句m;-20-多分支if語句【例題4-3】多分支if語句應(yīng)用示例1。 編寫程序:從鍵盤輸入一個(gè)字符,判斷該字符是數(shù)字字符、大寫字母、小寫字母還是其它字符,并輸出相應(yīng)的信息。 #include stdio.h int
10、 main( ) char ch; printf(請輸入一個(gè)字符: ); ch=getchar(); if(ch=0&c=A&ch=a&ch=z) printf(你輸入的是一個(gè)小寫字母!n); else 運(yùn)行結(jié)果 printf(你輸入的是除數(shù)字和字母以外的其它字符!n); return 0; -21-多分支if語句【例題4-4】多分支if語句應(yīng)用示例。 程序編制:輸入一百分制成績,要求輸出成績對應(yīng)等級A,B,C,D,E。90分以上為等級A,80分-89分為等級B,70分-79分為等級C,60分-69分為等級D。 #include int main( ) double score; printf
11、(“please input score(0-100):”); scanf(“%lf”,&score); if(score=90&score=80) printf(“The grade is Bn”); else if(score=70) printf(“The grade is Cn”); else if(score=60) printf(“The grade is Dn”); else printf(“The grade is En”); 程序運(yùn)行結(jié)果 return 0; -22-4.4.2 if語句的嵌套if(表達(dá)式1) if(表達(dá)式1_1) 語句1; else 語句2;else if(
12、表達(dá)式1_2) 語句3; else 語句4;-23-if(表達(dá)式1) if(表達(dá)式1_1) 語句1; else if(表達(dá)式1_2) 語句2; else 語句3;4.4.2 if語句的嵌套學(xué)習(xí)if語句的嵌套要注意以下幾個(gè)問題: (1) 在if語句的嵌套結(jié)構(gòu)中,應(yīng)注意if與else的配對規(guī)則,else總是與它最近的還沒有配對的if相匹配。如果忽略了else與if配對,就會發(fā)生邏輯上的錯(cuò)誤。為避免產(chǎn)生邏輯錯(cuò)誤,使程序結(jié)構(gòu)更清晰,可以加 來確定配對關(guān)系,例如: if(表達(dá)式1) if (表達(dá)式2 語句1; else 語句2; 添加 后可以很清楚地表示出else與if的配對關(guān)系。 (2) 在if語句的
13、嵌套結(jié)構(gòu)中,if與else匹配后,只能形成嵌套結(jié)構(gòu),不能形成交叉結(jié)構(gòu)。 -24-4.5 switch語句 switch語句可以根據(jù)switch后表達(dá)式的多種值,對應(yīng)case表示的多個(gè)分支,switch語句又稱為開關(guān)語句。 switch語句的一般形式為: switch(表達(dá)式) case 常量1: 語句1; break; case 常量2: 語句2; break; case 常量3: 語句3; break; case 常量n: 語句n; break; default: 語句n+1; break; -25-4.5 switch語句【例題4-6】switch語句應(yīng)用示例。 程序編制:輸入一百分制成績
14、,要求輸出成績對應(yīng)等級A,B,C,D,E。90分以上為等級A,80分-89分為等級B,70分-79分為等級C,60分-69分為等級D。 #include int main( ) double score; printf(“請輸入學(xué)生成績:”); scanf(“%lf”,&score); if(score100) printf(“你輸入的成績超出正常范圍!n”); else switch(int)score/10) case 10: case 9: printf(“對應(yīng)的等級是A!n”); break; case 8: printf(“對應(yīng)的等級是B!n”); break; case 7: pr
15、intf(“對應(yīng)的等級是C!n”); break; case 6: printf(“對應(yīng)的等級是D!n”); break; default: printf(“對應(yīng)的等級是E!n”); return 0; -26-4.6 程序舉例 【例題4-7】任意輸入三角形的三邊長,判斷是否能構(gòu)成三角形,如果能構(gòu)成三角形求三角形面積。已知三角形的三邊長a,b,c,則計(jì)算三角形的面積公式為:其中s=(a+b+c)/2。 #include #include int main( ) float a,b,c,s,area=0.0f; printf(“please input a,b,c:”); scanf(“%f,%
16、f,%f”,&a,&b,&c); if(a+bc&a+cb&b+ca) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); 運(yùn)行結(jié)果 else printf(“The three sides dont be a tringle!n”); printf(“area=%fn”,area); return 0; -27-4.6 程序舉例#includeint main() int n,c; float price=98.5,amount; scanf(“%d”,&n); if(n=2000) c=10; else c=n/200; switch(c) case 1
17、: case 2: price=0.95*price; break; case 3: case 4: case 5: price=0.90*price; break; case 6: case 7: case 8: case 9: price=0.85*price; break; case 10: price=0.80*price; break; amount=price*n; printf(“amount=%.2fn”,amount); return 0; 運(yùn)行結(jié)果-28-【例題4-8】某公司對一產(chǎn)品按購買數(shù)量(n)進(jìn)行打折優(yōu)惠。該產(chǎn)品的單價(jià)為98.5元,打折標(biāo)準(zhǔn):n200 不打折;200n600 9.5折;600n1200 9.0折;1200n2000 8.5折;n2000 8.0折。編程按其購買的數(shù)量計(jì)算應(yīng)付貨款。4.6 程序舉例#include #include int main( ) float a,b,c,d,m,n; printf(“請輸入一元二次方程的三個(gè)系數(shù):a,b,c的值:”); scanf(“%f,%f,%f”,&a,&b,&c); printf(“n”); if(a=0) if(b=0) printf(“無意義的等
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 錦州市古塔區(qū)輔警招聘公安基礎(chǔ)知識考試題庫及答案
- 鶴壁市淇濱區(qū)輔警考試題《公安基礎(chǔ)知識》綜合能力試題庫(附答案)
- 未來五年復(fù)合材料制絕緣配件企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報(bào)告
- 2026高校區(qū)域技術(shù)轉(zhuǎn)移轉(zhuǎn)化中心(福建)新型功能材料分中心招聘5人備考題庫必考題
- 上海市黃浦區(qū)招聘2名圖書管理員備考題庫附答案
- 中國農(nóng)業(yè)科學(xué)院2026年度第一批統(tǒng)一公開招聘參考題庫必考題
- 北京林業(yè)大學(xué)附屬小學(xué)教師崗位招聘2人參考題庫必考題
- 古藺縣2025年公開招募新興領(lǐng)域黨建工作專員的備考題庫必考題
- 城發(fā)水務(wù)(固始)有限公司招聘11人(河南)備考題庫必考題
- 岳池縣酉溪鎮(zhèn)人民政府關(guān)于公開招聘社區(qū)專職網(wǎng)格員的參考題庫附答案
- 2025年接觸網(wǎng)覆冰舞動處置預(yù)案
- 剪映電腦剪輯課件
- 人教版七年級英語上冊全冊語法知識點(diǎn)梳理
- 母乳喂養(yǎng)的新進(jìn)展
- 2025年浙江省中考科學(xué)試題卷(含答案解析)
- 要素式民事起訴狀(房屋租賃合同糾紛)
- 急性呼吸窘迫綜合征病例討論
- DB11∕T 510-2024 公共建筑節(jié)能工程施工質(zhì)量驗(yàn)收規(guī)程
- 英語滬教版5年級下冊
- T/CPFIA 0005-2022含聚合態(tài)磷復(fù)合肥料
- GB/T 43590.507-2025激光顯示器件第5-7部分:激光掃描顯示在散斑影響下的圖像質(zhì)量測試方法
評論
0/150
提交評論