版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式 5.2邏輯運(yùn)算符和邏輯表達(dá)式 5.3if語(yǔ)句 5.4switch語(yǔ)句 5.5程序舉例 習(xí)題,第5章 選擇結(jié)構(gòu)程序設(shè)計(jì),在第3章中已介紹了選擇結(jié)構(gòu),它是三種基本結(jié)構(gòu)之一。在大多數(shù)程序中都會(huì)包含選擇結(jié)構(gòu)。它的作用是,根據(jù)所指定的條件是否滿足,決定從給定的兩組操作選擇其一。在本章中介紹如何用c語(yǔ)言實(shí)現(xiàn)選擇結(jié)構(gòu)。在c語(yǔ)言中選擇結(jié)構(gòu)是用if語(yǔ)句實(shí)現(xiàn)的。if語(yǔ)句最常用的形式是 if (關(guān)系表達(dá)式)語(yǔ)句1 else 語(yǔ)句2 例如: if ( x0 ) y=1; else y=-1; 其中x0是一個(gè)關(guān)系表達(dá)式?!啊笔且粋€(gè)關(guān)系運(yùn)算符。,5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式,關(guān)系運(yùn)算是邏輯
2、運(yùn)算中比較簡(jiǎn)單的一種。所謂“關(guān)系運(yùn)算”實(shí)際上是“比較運(yùn)算”。將兩個(gè)值進(jìn)行比較,判斷其比較的結(jié)果是否符合給定的條件。例如,a3是一個(gè)關(guān)系表達(dá)式,大于號(hào)()是一個(gè)關(guān)系運(yùn)算符,如果a的值為5,則滿足給定的“a3”條件,因此關(guān)系表達(dá)式的值為“真”(即“條件滿足”);如果a的值為2,不滿足“a3”條件,則稱關(guān)系表達(dá)式的值為“假”。,5.1.1 關(guān)系運(yùn)算符及其優(yōu)先次序,C語(yǔ)言提供6種關(guān)系運(yùn)算符: 優(yōu)先級(jí)相同 (高): (小于) =(小于或等于) (大于) =(大于或等于) 優(yōu)先級(jí)相同 (低): = = (等于) !=(不等于) 關(guān)于優(yōu)先次序: (1) 前4種關(guān)系運(yùn)算符(,=,=)的優(yōu)先級(jí)別相同,后兩種也相
3、同。前4種高于后2種。例如,“”優(yōu)先于“=”。而“”與“”優(yōu)先級(jí)相同。,(2) 關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。 (3) 關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。 以上關(guān)系見(jiàn)圖5.1。 例如: cab等效于 c(ab) ab=c 等效于(ab)=c a=bc 等效于a=(bc) a=bc 等效于a=(bc),圖5.1,5.1.2 關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá) 式、字符表達(dá)式)連接起來(lái)的式子,稱關(guān)系表達(dá)式。例如,下面都是合法的關(guān)系表達(dá)式: ab,abbc,(a=3)(b=5),ab,(ab)(bc) 關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“
4、假”。例如,關(guān)系表達(dá)式“5=3”的值為“假”,“5=0”的值為“真”。c語(yǔ)言沒(méi)有邏輯型數(shù)據(jù)(Pascal語(yǔ)言以True表示“真”,以false表示“假”。PascaL和FORTRAN等語(yǔ)言都有邏輯型變量和邏輯型常,量),以1代表“真”,以“0”代表“假”。例如,a=3,b=2,c=1,則: 關(guān)系表達(dá)式“ab”的值為“真”,表達(dá)式的值為1。 關(guān)系表達(dá)式“(ab)=c”的值為“真”(因?yàn)閍b的值為1,等于c的值),表達(dá)式的值為1。 關(guān)系表達(dá)式“bca”的值為“假”,表達(dá)式的值為0。 如果有以下賦值表達(dá)式: d=abd的值為1。 f=abcf的值為0 (因?yàn)椤啊边\(yùn)算符是自左至右的結(jié)合方向,先執(zhí)行“a
5、b”得值為1, 再執(zhí)行關(guān)系運(yùn)算“1c”,得值0,賦給f)。,用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子就是邏輯表達(dá)式。在basic和Pascal語(yǔ)言中有以下形式的邏輯表達(dá)式(AND是邏輯運(yùn)算符): (ab)AND(xy) 如果ab且xy,則上述邏輯表達(dá)式的值為“真”。下面介紹c語(yǔ)言中的邏輯運(yùn)算符和邏輯運(yùn)算。 5.2.1 邏輯運(yùn)算符及其優(yōu)先次序 C語(yǔ)言提供三種邏輯運(yùn)算符:,5.2 邏輯運(yùn)算符和邏輯表達(dá)式,(1) else if(number300)cost=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05; else
6、cost=0; 說(shuō)明: (1) 三種形式的if語(yǔ)句中在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。例如,if(a=b else 各有一個(gè)分號(hào) printf(%f,-x); 這是由于分號(hào)是c語(yǔ)句中不可缺少的部分,這個(gè)分號(hào)是if語(yǔ)句中的內(nèi)嵌語(yǔ)句所要求的。如果無(wú)此分號(hào),則出現(xiàn)語(yǔ)法錯(cuò)誤。但應(yīng)注意,不要誤認(rèn)為上面是兩個(gè)語(yǔ)句(if語(yǔ)句和else語(yǔ)句)。它們都屬于同一個(gè)if語(yǔ)句。else子句不能作為語(yǔ)句單獨(dú)使用,它必須是if語(yǔ)句的一部分,與if配對(duì)使用。,(3) 在if和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句(如上例),也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)“”將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。如:
7、if(abc printf(area=62f,area); else printf(it is not a trilateral); 注意在第3行的花括號(hào)“”外面不需要再加分號(hào)。因?yàn)閮?nèi)是一個(gè)完整的復(fù)合語(yǔ)句,不需另附加分號(hào)。,例5.1輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大的次序輸出這兩個(gè)數(shù)。 這個(gè)問(wèn)題的算法很簡(jiǎn)單,只需要作一次比較即可。對(duì)類似這樣簡(jiǎn)單的問(wèn)題可以不必先寫出算法或畫流程圖,而直接編寫程序。或者說(shuō),算法在編程者的腦子里,相當(dāng)于在算術(shù)運(yùn)算中對(duì)簡(jiǎn)單的問(wèn)題可以“心算”而不必在紙上寫出來(lái)一樣。 程序如下: main() float a,b,t; scanf(f,f, else realpart=-b(
8、2*a);,imagpart=sqrt(-disc)(2*a); printf(has comPlex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); 程序中用disc代表b2-4ac,先計(jì)算disc的值,以減少以后的重復(fù)計(jì)算。對(duì)于判斷b2-4ac是否等于0時(shí),要注意一個(gè)問(wèn)題:由于disc(即b2-4ac)是,實(shí)數(shù),而實(shí)數(shù)在計(jì)算和存儲(chǔ)時(shí)會(huì)有一些微小的誤差,因此不能直接進(jìn)行如下判斷:if(disc=0)因?yàn)檫@樣可能會(huì)出現(xiàn)本來(lái)是零的量,由于上述誤差而被判別為不等于零
9、而導(dǎo)致結(jié)果錯(cuò)誤。所以采取的辦法是判別disc的絕對(duì)值(fabs(disc)是否小于一個(gè)很小的數(shù)(例如10-6),如果小于此數(shù),就認(rèn)為disc=0。程序中以realpart代表實(shí)部P,以imagpart代表虛部q,以增加可讀性。 運(yùn)行結(jié)果如下: 1,2,1 The equation has two equalroots-10000, 1,2,2 The equation has complex roots: -1000010000i -10000-10000i 2,6,1 The equation has distinct real roots:-0.1771 and =2.8229 例5.7運(yùn)
10、輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(S)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:,s250km沒(méi)有折扣 250S500 2折扣 500S1000 5折扣 1000S2000 8折扣 2000S3000 10折扣 3000S 15折扣 設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為P(Price的縮寫),貨物重為w(weight的縮寫),距離為S,折扣為d(discount的縮寫),則總運(yùn)費(fèi)f(freight的縮寫)的計(jì)算公式為f=P*w*S*(1-d)分析此問(wèn)題,折扣的變化是有規(guī)律的:從圖5.15可以看到,折扣的“變化,點(diǎn)”都是250的倍數(shù)(250,500,1000,2000,3000)。利用這一特點(diǎn),可以在橫軸上加一種坐標(biāo)c
11、,c的值為S/250。c代表250的倍數(shù)。當(dāng)c1時(shí),表示S250,無(wú)折扣;1c2時(shí),表示250S500,折扣d=2;2c4時(shí),d=5;4c8時(shí),d=8;8c12時(shí),d=10;c12時(shí),d=15。,圖5.15,據(jù)此寫出程序如下: main() int c,S; float P,w,d,f; scanf(f,f,d,&P,&w,&S); if(S=3000) c=12; elsec=S250; switch(c) case0d=0;break;,case1d=2;break; case2 case3d=5;break; case4 case5 case6 case7d=8;break; case8
12、 case9 case10 case11d=10;break;,case12d=15;break; f=P*w*S*(1-d1000); printf(freight=154f,f); 運(yùn)行情況如下: 100,20,300 freight= 588000.0000 請(qǐng)注意:c、S是整型變量,因此c=S250為整數(shù)。當(dāng)S3000時(shí),令c=12,而不使c隨S增大,這是為了在Switch語(yǔ)句中便于處理,用一個(gè)case可以處理所有S3000的情況。,習(xí)題 5.1 什么是算術(shù)運(yùn)算?什么是關(guān)系運(yùn)算?什么是邏輯運(yùn)算? 5.2 C語(yǔ)言中如何表示“真”和“假”?系統(tǒng)如何判斷一個(gè)量的“真”和“假”? 5.3 寫出
13、下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5。 (1) abc & b=c (2) a|bc & b-c (3) !(ab) & !c|1 (4) !(x=a) & (y=b) & 0 (5) !(ab)c-1 & bc2,5.4 有3個(gè)整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。 5.5 有一函數(shù): x (x1) y = 2x-1 (1x10) 3x-11(x10) 寫一程序,輸入x,輸出y值。 5.6 給一個(gè)不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別打印出每一位數(shù)字;按逆序打印出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123。,圖5.16,5.7 企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)I低于或等于10萬(wàn)元的,獎(jiǎng)金可提10;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元(100000I200000)時(shí),低于10萬(wàn)元的部分按10提成,高于100000元的部分,可提成75;200000I400000時(shí),低于20萬(wàn)的部分仍按上述辦法提成(下同)。高于20萬(wàn)元的部職?提成;400000I600000時(shí),高于40萬(wàn)元的部分按3提成
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新員工培訓(xùn)講稿
- 2025中國(guó)鐵建招聘28人筆試歷年典型考點(diǎn)題庫(kù)附帶答案詳解2套試卷
- 2025中國(guó)電信廣西公司校園招聘火熱進(jìn)行中筆試參考題庫(kù)附帶答案詳解
- 2025中國(guó)林業(yè)集團(tuán)有限公司黨委工作部(黨委宣傳部)業(yè)務(wù)骨干社會(huì)招聘2人筆試歷年典型考點(diǎn)題庫(kù)附帶答案詳解
- 新員工培訓(xùn)目錄
- 2025中國(guó)安能一局合肥分公司職位信息筆試歷年典型考點(diǎn)題庫(kù)附帶答案詳解2套試卷
- 2025中國(guó)華電集團(tuán)有限公司派駐審計(jì)處招聘6人筆試參考題庫(kù)附帶答案詳解
- 2025中國(guó)中化集團(tuán)有限公司招聘20人筆試歷年備考題庫(kù)附帶答案詳解
- 新員工培訓(xùn)文庫(kù)
- 新員工入職培訓(xùn)目錄
- 白內(nèi)障疾病教學(xué)案例分析
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026年黃委會(huì)事業(yè)單位考試真題
- 供水管網(wǎng)及配套設(shè)施改造工程可行性研究報(bào)告
- 2026年及未來(lái)5年中國(guó)高帶寬存儲(chǔ)器(HBM)行業(yè)市場(chǎng)調(diào)查研究及投資前景展望報(bào)告
- 英語(yǔ)試卷浙江杭州市學(xué)軍中學(xué)2026年1月首考適應(yīng)性考試(12.29-12.30)
- 生產(chǎn)車間停線制度
- EVE國(guó)服歷史匯編
- 排水管道溝槽土方開挖專項(xiàng)方案
- 室內(nèi)裝飾工程施工組織設(shè)計(jì)方案
- 馬克思是如何學(xué)習(xí)外語(yǔ)的
評(píng)論
0/150
提交評(píng)論