選擇結構程序設計 清華大學1.ppt_第1頁
選擇結構程序設計 清華大學1.ppt_第2頁
選擇結構程序設計 清華大學1.ppt_第3頁
選擇結構程序設計 清華大學1.ppt_第4頁
選擇結構程序設計 清華大學1.ppt_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、4.1關系運算符和關系表達式 4.2邏輯運算符和邏輯表達式 4.3if語句 4.4switch語句 4.5程序舉例 習題,第4章 選擇結構程序設計,選擇結構,是三種基本結構之一。在大多數(shù)程序中都會包含選擇結構。 它的作用是,根據(jù)所指定的條件是否滿足,決定從給定的兩組操作選擇其一。在c語言中選擇結構是用if語句實現(xiàn)的。 if語句最常用的形式是 if (關系表達式)語句1 else 語句2 例如: if ( x0 ) y=1; else y=-1; 其中x0是一個關系表達式?!啊笔且粋€關系 運算符。,4.1 關系運算符和關系表達式,所謂“關系運算”實際上是“比較運算”。將兩個值進行比較,判斷其比較

2、的結果是否符合給定的條件。 例如,a3是一個關系表達式,大于號()是一個關系運算符,如果a的值為5,則滿足給定的“a3”條件,因此關系表達式的值為“真”(即“條件滿足”);如果a的值為2,不滿足“a3”條件,則稱關系表達式的值為“假”。,4.1.1 關系運算符及其優(yōu)先次序,C語言提供6種關系運算符: 優(yōu)先級相同 (高): (小于) =(小于或等于) (大于) =(大于或等于) 優(yōu)先級相同 (低): = = (等于) !=(不等于) 關于優(yōu)先次序: (1) 前4種關系運算符(,=,=)的優(yōu)先級別相同,后兩種也相同。前4種高于后2種。例如,“”優(yōu)先于“=”。而“”與“”優(yōu)先級相同。,(2) 關系運

3、算符的優(yōu)先級低于算術運算符。 (3) 關系運算符的優(yōu)先級高于賦值運算符。 以上關系見圖4.1。 例如: cab等效于 c(ab) ab=c 等效于(ab)=c a=bc 等效于a=(bc) a=bc 等效于a=(bc),圖4.1,4.1.2 關系表達式 用關系運算符將兩個表達式(可以是算術表達式或關系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱關系表達式。下面都是合法的關系表達式: ab, abbc, (a=3)(b=5), ab, (ab)(bc) 關系表達式的值是一個邏輯值,即“真”或“假”。例如,關系表達式“5=3”的值為“假”,“5=0”的值為“真”。,例如,a=3,

4、b=2,c=1,則: 關系表達式“ab”的值為“真”, 表達式的值為1。 關系表達式“(ab)=c”的值為“真”(因為ab的值為1,等于c的值),表達式的值為1。 關系表達式“bca”的值為“假”, 表達式的值為0。 如果有以下賦值表達式: d=ab d的值為1。 f=abc f的值為0 (因為“”運算符是自左至右的結合方向,先執(zhí)行“ab”得值為1, 再執(zhí)行關系運算“1c”,得值0,賦給f)。,用邏輯運算符將關系表達式或邏輯量連接起來的式子就是邏輯表達式。 4.2.1 邏輯運算符及其優(yōu)先次序 C語言提供三種邏輯運算符: (1) else if(number300) cost=0.10; els

5、e if(number100) cost=0.075; else if(number50) cost=0.05; elsecost=0; 說明: (1) 三種形式的if語句中在if后面都有“表達式”,一般為邏輯表達式或關系表達式。例如,if(a=b else 各有一個分號 printf(%f,-x); 這是由于分號是c語句中不可缺少的部分,這個分號是if語句中的內嵌語句所要求的。如果無此分號,則出現(xiàn)語法錯誤。但應注意,不要誤認為上面是兩個語句(if語句和else語句)。它們都屬于同一個if語句。else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。,(3) 在if和els

6、e后面可以只含一個內嵌的操作語句(如上例),也可以有多個操作語句,此時用花括號“”將幾個語句括起來成為一個復合語句。如: if (abc else printf(it is not a trilateral); 注意在第3行的花括號“”外面不需要再加分號。因為內是一個完整的復合語句,不需另附加分號。,例4.1輸入兩個實數(shù),按代數(shù)值由小到大的次序輸出這兩個數(shù)。 這個問題的算法很簡單,只需要作一次比較即可。對類似這樣簡單的問題可以不必先寫出算法或畫流程圖,而直接編寫程序?;蛘哒f,算法在編程者的腦子里,相當于在算術運算中對簡單的問題可以“心算”而不必在紙上寫出來一樣。 程序如下: main() fl

7、oat a,b,t; scanf(f,f, else realpart=-b(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,先計算disc的值,以減少以后的重復計算。對于判斷b2-4ac是否等于0時,要注意一個問題:由于disc(即b2-4ac)是,實數(shù),而實數(shù)在計算和存儲時會有一些微小的誤差,因此不能直接進行如下判斷:if

8、(disc=0)因為這樣可能會出現(xiàn)本來是零的量,由于上述誤差而被判別為不等于零而導致結果錯誤。所以采取的辦法是判別disc的絕對值(fabs(disc)是否小于一個很小的數(shù)(例如10-6),如果小于此數(shù),就認為disc=0。程序中以realpart代表實部P,以imagpart代表虛部q,以增加可讀性。 運行結果如下: 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 distin

9、ct real roots:-0.1771 and =2.8229 例4.7運輸公司對用戶計算運費。路程(S)越遠,每公里運費越低。標準如下:,s250km沒有折扣 250S500 2折扣 500S1000 5折扣 1000S2000 8折扣 2000S3000 10折扣 3000S 15折扣 設每公里每噸貨物的基本運費為P(Price的縮寫),貨物重為w(weight的縮寫),距離為S,折扣為d(discount的縮寫),則總運費f(freight的縮寫)的計算公式為f=P*w*S*(1-d)分析此問題,折扣的變化是有規(guī)律的:從圖4.15可以看到,折扣的“變化,點”都是250的倍數(shù)(250,

10、500,1000,2000,3000)。利用這一特點,可以在橫軸上加一種坐標c,c的值為S/250。c代表250的倍數(shù)。當c1時,表示S250,無折扣;1c2時,表示250S500,折扣d=2;2c4時,d=5;4c8時,d=8;8c12時,d=10;c12時,d=15。,圖4.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;

11、case4 case5 case6 case7d=8;break; case8 case9 case10 case11d=10;break;,case12d=15;break; f=P*w*S*(1-d1000); printf(freight=154f,f); 運行情況如下: 100,20,300 freight= 588000.0000 請注意:c、S是整型變量,因此c=S250為整數(shù)。當S3000時,令c=12,而不使c隨S增大,這是為了在Switch語句中便于處理,用一個case可以處理所有S3000的情況。,習題 4.1 什么是算術運算?什么是關系運算?什么是邏輯運算? 4.2 C語

12、言中如何表示“真”和“假”?系統(tǒng)如何判斷一個量的“真”和“假”? 4.3 寫出下面各邏輯表達式的值。設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,4.4 有3個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。 4.5 有一函數(shù): x (x1) y = 2x-1 (1x10) 3x-11(x10) 寫一程序,輸入x,輸出y值。 4.6 給一個不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別打印出每一位數(shù)字;按逆序打印出各位數(shù)字,例如原數(shù)為321,應輸出123。,圖4.16,4.7 企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤I低于或等于10萬元的,獎金可提10;利潤高于10萬元,低于20萬元(100000I200000)時,低于10萬元的部分按10提成,高于100000元的部分,可提成75;200000I400000時,低于20萬的部分仍按上述辦法提成(下同)。高于20萬元的部職?提成;400000I600000時,高于40萬元的部分按3提成;600000I10000

溫馨提示

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

評論

0/150

提交評論