C語(yǔ)言程序設(shè)計(jì)課件:chap03-分支結(jié)構(gòu)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件:chap03-分支結(jié)構(gòu)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件:chap03-分支結(jié)構(gòu)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件:chap03-分支結(jié)構(gòu)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課件:chap03-分支結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Chap 3 分支結(jié)構(gòu)3.1 統(tǒng)計(jì)輸入的一批字符中各類字符的數(shù)量 3.2 查詢自動(dòng)售貨機(jī)中商品的價(jià)格 3.3 分支結(jié)構(gòu)程序設(shè)計(jì)本章要點(diǎn) 什么是分支結(jié)構(gòu)?它的作用是什么? switch 語(yǔ)句中的 break 起什么作用? 邏輯運(yùn)算和關(guān)系運(yùn)算的相同之處是什么?它們之間又有什么不同? 字符型數(shù)據(jù)在內(nèi)存中是如何存儲(chǔ)的?3.1 統(tǒng)計(jì)輸入的一批字符中各類字符的數(shù)量例3-1 輸入10個(gè)字符,統(tǒng)計(jì)其中英文字母、數(shù)字字符和其他字符的個(gè)數(shù)。 3.1.1 程序解析3.1.2 字符類型3.1.3 字符數(shù)據(jù)的輸入和輸出 3.1.4 邏輯運(yùn)算3.1.5 else-if 語(yǔ)句3.1.1 程序解析#include int m

2、ain(void) int digit, i, letter, other; char ch; digit = letter = other = 0; printf(“Enter 10 characters: ); for(i = 1; i = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9x=1 關(guān)系運(yùn)算-1 = x = -1 并且 x = -1 & x 1)&(y1) (x1)|(y1) (x1)!(x1) 即 x= a) & (ch = a & ch = a & ch =

3、 A & ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9) digit +;else other +;假表達(dá)式1表達(dá)式2語(yǔ)句1語(yǔ)句2語(yǔ)句n-1語(yǔ)句n真表達(dá)式n-1真假真假假分段計(jì)算水費(fèi)例3-3 分段計(jì)算水費(fèi) 源程序-分段計(jì)算水費(fèi)# include int main(void) double x, y; printf(Enter x:); scanf(%lf, &x); if (x 0) y = 0; else if (x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; prin

4、tf(f(%.2f) = %.2fn, x, y); return 0;Enter x: -0.5f(-0.50) = 0.00 Enter x: 9.5f(9.50) = 12.67Enter x: 21.3f(21.30) = 42.75Enter x: ?編程練習(xí) 3-33.2 查詢自動(dòng)售貨機(jī)中商品的價(jià)格 例3-4 查詢自動(dòng)售貨機(jī)中商品的價(jià)格3.2.1 程序解析3.2.2 switch語(yǔ)句3.2.1 程序解析假設(shè)自動(dòng)售貨機(jī)出售4種商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(lè)(cola),售價(jià)分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯

5、示以下菜單,用戶可以連續(xù)查詢商品的價(jià)格,當(dāng)查詢次數(shù)超過(guò)5次時(shí),自動(dòng)退出查詢;不到5次時(shí),用戶可以選擇退出。當(dāng)用戶輸入編號(hào)14,顯示相應(yīng)商品的價(jià)格;輸入0,退出查詢;輸入其他編號(hào),顯示價(jià)格為0。1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 Exit#include Int main(void) int choice, i; double price; for( i = 1; i = 5; i+) printf(1 Select crisps n); printf(2 Select popcorn n); pri

6、ntf(3 Select chocolate n); printf(4 Select cola n); printf(0 exit n); printf(Enter choice: ); scanf(%d, &choice); if(choice = 0) break; switch (choice) case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; printf(price = %0

7、.1fn, price); printf(Thanks n); 1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 1price = 3.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 7price = 0.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter

8、choice: 0Thanks3.2.2 switch語(yǔ)句 處理多分支選擇問(wèn)題,3種情況1、在switch語(yǔ)句的每個(gè)語(yǔ)句段中都使用break語(yǔ)句switch(表達(dá)式) case 常量表達(dá)式1:語(yǔ)句段1; break; case 常量表達(dá)式2:語(yǔ)句段2 ; break; . case 常量表達(dá)式n:語(yǔ)句段n ; break; default : 語(yǔ)句段n+1 ; break;switch(表達(dá)式) case 常量表達(dá)式1:語(yǔ)句段1; break; case 常量表達(dá)式2:語(yǔ)句段2 ; break; . case 常量表達(dá)式n:語(yǔ)句段n ; break; default : 語(yǔ)句段n+1 ; br

9、eak;表達(dá)式的值=常量表達(dá)式 2 的值表達(dá)式語(yǔ)句段1語(yǔ)句段2語(yǔ)句段n語(yǔ)句段n+1表達(dá)式的值=常量表達(dá)式 1 的值表達(dá)式的值=常量表達(dá)式 n 的值其他breakbreakbreakbreakswitch (choice) case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break;用else-if 如何實(shí)現(xiàn)?求解簡(jiǎn)單表達(dá)式例3-5 輸入一個(gè)形式如“操作數(shù) 運(yùn)算符 操作數(shù)”的四則運(yùn)算表達(dá)式,輸出運(yùn)算

10、結(jié)果。例如:輸入:3.1+4.8 輸出:7.9源程序# include int main(void) char operator; double value1, value2; printf(Type in an expression: ); scanf(%lf%c%lf, &value1, &operator, &value2); switch(operator) case +: printf(=%.2fn, value1+value2); break; case -: printf(=%.2fn, value1-value2); break; case *: printf(=%.2fn,

11、value1*value2); break; case /: printf(=%.2fn, value1/value2); break; default: printf(Unknown operatorn); break; return 0;Type in an expression: 3.1+4.8 =7.9如果除數(shù)為0?2、在switch中不使用breakswitch(表達(dá)式) case 常量表達(dá)式1:語(yǔ)句段1; case 常量表達(dá)式2:語(yǔ)句段2; . case 常量表達(dá)式n:語(yǔ)句段n; default : 語(yǔ)句段n+1;switch(表達(dá)式) case 常量表達(dá)式1:語(yǔ)句段1; case

12、 常量表達(dá)式2:語(yǔ)句段2; . case 常量表達(dá)式n:語(yǔ)句段n; default : 語(yǔ)句段n+1;switch (choice) case 1: price=3.0; case 2: price=2.5; case 3: price=4.0; case 4: price=3.5; default: price=0.0;表達(dá)式的值=常量表達(dá)式 2 的值表達(dá)式語(yǔ)句段1語(yǔ)句段2語(yǔ)句段n語(yǔ)句段n+1表達(dá)式的值=常量表達(dá)式 1 的值表達(dá)式的值=常量表達(dá)式 n 的值其他price=?3、在switch的某些語(yǔ)句段中使用break例3-6 輸入10個(gè)字符,分別統(tǒng)計(jì)出其中空格或回車、數(shù)字和其他字符的個(gè)數(shù)。

13、例3-1 輸入10個(gè)字符,統(tǒng)計(jì)其中英文字母、數(shù)字字符和其他字符的個(gè)數(shù)。int main(void) int blank, digit, i, other; char ch; blank = digit = other = 0; printf(Enter 10 characters: ); for(i = 1; i = 10; i+) ch = getchar(); switch (ch) case : case n: blank +; break; case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : c

14、ase 8 : case 9 : digit +; break; default: other +; break; printf(blank=%d, digit=%d, other=%dn, blank, digit, other); return 0;Enter 10 characters: Reold 123?blank=1, digit=3, other=63.3 分支結(jié)構(gòu)程序設(shè)計(jì) 分支結(jié)構(gòu)一般分為二分支和多分支兩種結(jié)構(gòu)用條件語(yǔ)句(if 和 switch)實(shí)現(xiàn)選擇3.3.1 二分支結(jié)構(gòu)和基本的 if 語(yǔ)句3.3.2 多分支結(jié)構(gòu)與嵌套的 if 語(yǔ)句和switch語(yǔ)句3.3.1 二分支結(jié)構(gòu)和

15、基本的 if 語(yǔ)句if (表達(dá)式) 語(yǔ)句1else 語(yǔ)句2if (表達(dá)式) 語(yǔ)句1語(yǔ)句1表達(dá)式語(yǔ)句2真假語(yǔ)句1表達(dá)式真假一條語(yǔ)句判斷數(shù)字的奇偶性例3-7 輸入1個(gè)整數(shù),判斷該數(shù)是奇數(shù)還是偶數(shù)。number % 2 = 0源程序-判斷數(shù)字的奇偶性#include int main(void) int number; printf(Enter a number: ); scanf(%d, &number); if(number % 2 = 0) printf(Tne number is even. n); else printf(Tne number is odd. n); return 0;En

16、ter a number: 329 Tne number is odd.Enter a number: 1028Tne number is even.求絕對(duì)值例3-8 輸入1個(gè)整數(shù),輸出它的絕對(duì)值 。當(dāng)number = 0時(shí),?源程序-求絕對(duì)值#include int main(void) int number; printf(Enter a number: ); scanf(%d, &number); if(number 0) number = -number; printf(The absolute value is %d.n, number); return 0;Enter a numb

17、er: 10 The absolute value is 10.Enter a number: -300 The absolute value is 300.3.3.2 多分支結(jié)構(gòu)與嵌套的 if 語(yǔ)句和switch語(yǔ)句多分支結(jié)構(gòu)有多種形式實(shí)現(xiàn)方法:嵌套的 if 語(yǔ)句 else if 語(yǔ)句嵌套的 if - else語(yǔ)句switch語(yǔ)句嵌套的 if 語(yǔ)句if (表達(dá)式) 語(yǔ)句1else 語(yǔ)句2 if 語(yǔ)句 if 語(yǔ)句 else if 語(yǔ)句 嵌套的 if - else語(yǔ)句if (表達(dá)式1) 語(yǔ)句1else if(表達(dá)式2) 語(yǔ)句2else if(表達(dá)式n-1) 語(yǔ)句n-1else 語(yǔ)句n假表達(dá)式1表

18、達(dá)式2語(yǔ)句1語(yǔ)句2語(yǔ)句n-1語(yǔ)句n真 表達(dá)式n-1假真 假假真 else if 語(yǔ)句n個(gè)分支需要n-1次比較嵌套的 if else 語(yǔ)句if(表達(dá)式1)if(表達(dá)式2) 語(yǔ)句1else 語(yǔ)句2 elseif(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4 表達(dá)式1表達(dá)式3語(yǔ)句4真 假表達(dá)式2語(yǔ)句3語(yǔ)句1語(yǔ)句2真 真 假假if (x 1) y = x + 1; else if (x 2) y = x + 2;else y = x + 3; if (x 2) if (x 1) y = x + 1; else y = x + 2;else y = x + 3; x2 x1y=x+1y=x+2真 假真 y=x+

19、3假假 x1 x2y=x+1y=x+2真 假真 y=x+32種嵌套if語(yǔ)句的比較else 和 if 的匹配if(表達(dá)式1)if(表達(dá)式2) 語(yǔ)句1else 語(yǔ)句2 elseif(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4 if(表達(dá)式1)if(表達(dá)式2) 語(yǔ)句1 elseif(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4 else 與最靠近它的、沒有與別的 else 匹配過(guò)的 if 匹配if(表達(dá)式1)if(表達(dá)式2) 語(yǔ)句1 elseif(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4 改變else 和 if 的配對(duì)例3-10 改寫下列 if 語(yǔ)句,使 else 和第1個(gè) if 配對(duì)。 if (x 2) if (x

20、 1) y = x + 1; else y = x + 2;if (x 2) if (x 1) y = x + 1; else y = x + 2;if (x 2) if (x 1) y = x + 1; else;else y = x + 2;每條語(yǔ)句的執(zhí)行條件? 習(xí)題3練習(xí):3-13-2習(xí)題3-1#include #include int main(void)float a=0,b=0,c=0,s=0,p=0;/p為周長(zhǎng)double area=0;/area面積printf(Enter a,b,c:);scanf(%f%f%f,&a,&b,&c);if(a+b)c&(a+c)b&(b+c)

21、a) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%lf,p=%fn,area,2*s);else printf(not triangle!n); return 0;#includeint main(void)float s=0.0,tax=0.0,r=0.0;printf(Enter s:);scanf(%f,&s);if(s850) r=0;else if(s1350) r=5; else if(s2850) r=10; else if(sy則將x與y的值進(jìn)行交換, 然后再用x與z進(jìn)行比較,如果xz則將x與z的值進(jìn)行交換,這樣能使x最小。 #include main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy)t=x;x=y;y=t; /*交換x,y的值*/if(xz)t=z;z=x;x=t;/*交換x,z的值*/if(yz)t=y;y=z;z=t;/*交換z,y的值*/printf(small to big: %d %d %dn

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論