第四章 選擇程序結(jié)構(gòu)設(shè)計(jì)_第1頁(yè)
第四章 選擇程序結(jié)構(gòu)設(shè)計(jì)_第2頁(yè)
第四章 選擇程序結(jié)構(gòu)設(shè)計(jì)_第3頁(yè)
第四章 選擇程序結(jié)構(gòu)設(shè)計(jì)_第4頁(yè)
第四章 選擇程序結(jié)構(gòu)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、第四章第四章 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)程序設(shè)計(jì):分支結(jié)構(gòu)程序設(shè)計(jì):程序由多路分支組成,在程序執(zhí)行過(guò)程中,根據(jù)條件的不同,僅選擇一條支路執(zhí)行,其它都被直接跳過(guò)。 4.1 if_else4.1 if_else結(jié)構(gòu)結(jié)構(gòu) 語(yǔ)法格式:語(yǔ)法格式: if(if(條件條件表達(dá)式表達(dá)式) ) 語(yǔ)句語(yǔ)句1 1 或或 塊語(yǔ)句塊語(yǔ)句11 else else 語(yǔ)句語(yǔ)句2 2 或或 塊語(yǔ)句塊語(yǔ)句22 表達(dá)式語(yǔ)句1語(yǔ)句2TFif例如例如: : (1) (1) 如果如果x0, x0, 輸出輸出x x的值(的值(x x為實(shí)型數(shù))。為實(shí)型數(shù))。 if(x0) printf(x=%f, x); (2) (2) 如果

2、如果a a和和b b相等相等, , 輸出:輸出:a=ba=b。 if(a= =b) printf(%s, a=b);if語(yǔ)句舉例語(yǔ)句舉例例如: 如果x0, 求x的平方根。 (1) 將結(jié)果放入變量y 中; (2) 輸出x的平方根y。if (x0) y=sqrt(x); printf(平方根平方根=%f, y); 計(jì)算y, x為實(shí)型數(shù)( 提示: x等于1時(shí),函數(shù)無(wú)定義。)11xxymain( ) float x; float y; scanf(%f, &x); if (x!=1) y=(x+1)/(x -1); printf(x=%6.2f, y=%6.2fn, x, y); 例例 1 1

3、:輸入數(shù)據(jù)輸入數(shù)據(jù): 1.2運(yùn)行結(jié)果為運(yùn)行結(jié)果為: x= 1.20, y= 11.00 例:例: 求兩個(gè)數(shù)求兩個(gè)數(shù)x、 y的最大值的最大值max。用條件表達(dá)式表示為:用條件表達(dá)式表示為:(xy)?)?max=x: max=y;用條件表達(dá)式表示為:用條件表達(dá)式表示為: (i%2= =0)? Printf(“偶數(shù)偶數(shù)n”) : printf(“奇數(shù)奇數(shù)n”);if (xy) max=x; else max=y; 例:例: 判斷整數(shù)判斷整數(shù)i 的奇偶性。的奇偶性。if (i%2= =0) printf(偶數(shù)偶數(shù)n); else printf(奇數(shù)奇數(shù)n);ifelse語(yǔ)句語(yǔ)句例2 :main( )

4、float x; float y; printf(請(qǐng)輸入x: ); scanf(%f, &x); if (x1) y=x+1; else y=x- 1; printf(x=%6.2f, y=%6.2fn, x, y);(x1)?)?y=x+1: y=x-1計(jì)算計(jì)算y y的值:的值: 1111,xxxxyyy, max=x, min=y 如果如果xy) max=x; min=y; else max=y; min=x; printf(max=%6.2f, min=%6.2fn, max, min);輸入數(shù)據(jù)輸入數(shù)據(jù): 1.2, 2.54運(yùn)行結(jié)果運(yùn)行結(jié)果: max= 2.54, min= 1

5、.20 if和else子句中如果是if語(yǔ)句,則稱為if語(yǔ)句的嵌套。(1) if子句中嵌套if-else語(yǔ)句 if (表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2 else 語(yǔ)句3 (2) if子句中嵌套if語(yǔ)句 if (表達(dá)式1) if(表達(dá)式表達(dá)式2) 語(yǔ)句語(yǔ)句1 else 語(yǔ)句2 (3) else子句中嵌套if-else語(yǔ)句 if (表達(dá)式1) 語(yǔ)句1 else if(表達(dá)式2) 語(yǔ)句2 else 語(yǔ)句3 4.2 if4.2 if語(yǔ)句的嵌套語(yǔ)句的嵌套(4) else子句中嵌套if語(yǔ)句 if (表達(dá)式1) 語(yǔ)句1 else if(表達(dá)式2) 語(yǔ)句2if 語(yǔ)句的擴(kuò)展語(yǔ)句:語(yǔ)句的擴(kuò)展語(yǔ)

6、句: if(表達(dá)式1) 語(yǔ)句1 else if(表達(dá)式2) 語(yǔ)句2 else if(表達(dá)式3) 語(yǔ)句3 else if(表達(dá)式n) 語(yǔ)句n else 語(yǔ)句n+14.2 if4.2 if語(yǔ)句的嵌套語(yǔ)句的嵌套程序段程序段1: int x = 20; if ( x = 0) if ( x =0 且 x=0 且 x=50*/分析下面兩個(gè)程序段的輸出結(jié)果程序段程序段2: int x = 20; if ( x = 0) if ( x b) printf(“ab”); else printf(“a=90) ch=A; else if (cj=80) ch=B; else if (cj=70) ch=C; e

7、lse if (cj=60) ch=D; else ch=E; goto語(yǔ)句格式格式: goto 語(yǔ)句標(biāo)號(hào)語(yǔ)句標(biāo)號(hào); 功能功能: 將程序的執(zhí)行流程無(wú)條件轉(zhuǎn)移至語(yǔ)句標(biāo)號(hào)所標(biāo)識(shí)的位置處執(zhí)行。將程序的執(zhí)行流程無(wú)條件轉(zhuǎn)移至語(yǔ)句標(biāo)號(hào)所標(biāo)識(shí)的位置處執(zhí)行。例如: x=0; flag: if(x10) x+; goto flag; 說(shuō)明說(shuō)明: (1) C語(yǔ)言的語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示語(yǔ)言的語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示, 它僅僅表示它僅僅表示goto語(yǔ)句轉(zhuǎn)移的目標(biāo)語(yǔ)句轉(zhuǎn)移的目標(biāo)地址。地址。 (2) 帶有標(biāo)號(hào)的語(yǔ)句稱為標(biāo)號(hào)語(yǔ)句帶有標(biāo)號(hào)的語(yǔ)句稱為標(biāo)號(hào)語(yǔ)句, 標(biāo)號(hào)與語(yǔ)句之間用冒號(hào)分隔。標(biāo)號(hào)與語(yǔ)句之間用冒號(hào)分隔。 標(biāo)標(biāo)號(hào)語(yǔ)句僅對(duì)號(hào)

8、語(yǔ)句僅對(duì)goto語(yǔ)句有意義。語(yǔ)句有意義。 (3) goto語(yǔ)句往往與語(yǔ)句往往與if 語(yǔ)句配套使用構(gòu)成一種遠(yuǎn)距離的轉(zhuǎn)移。語(yǔ)句配套使用構(gòu)成一種遠(yuǎn)距離的轉(zhuǎn)移。(4) 盡量少使用盡量少使用goto語(yǔ)句語(yǔ)句, 即使使用即使使用, 一般也不要將程序執(zhí)行流程向后一般也不要將程序執(zhí)行流程向后轉(zhuǎn)移。轉(zhuǎn)移。 比較兩個(gè)數(shù)的大小關(guān)系。比較兩個(gè)數(shù)的大小關(guān)系。作業(yè):作業(yè):語(yǔ)句格式:語(yǔ)句格式:switch(switch(測(cè)試測(cè)試表達(dá)式表達(dá)式) ) case case 常量表達(dá)式常量表達(dá)式1 1:語(yǔ)句:語(yǔ)句1 1; case case 常量表達(dá)式常量表達(dá)式2 2:語(yǔ)句:語(yǔ)句2 2; . case case 常量表達(dá)式常量表達(dá)

9、式n n:語(yǔ)句:語(yǔ)句n n; default: default: 語(yǔ)句語(yǔ)句n+1n+1; 執(zhí)行過(guò)程:執(zhí)行過(guò)程: 首先計(jì)算計(jì)算表達(dá)式的值,然后逐個(gè)與其后的常量表達(dá)式的值相比 較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等相等時(shí),則執(zhí)行其后 所有語(yǔ)句所有語(yǔ)句;如表達(dá)式的值與所有的常量表達(dá)式的值不相同時(shí), 執(zhí)行default后的語(yǔ)句。4.3 switch4.3 switch結(jié)構(gòu)結(jié)構(gòu) (1) 表達(dá)式可以是任何類型,通常為整型或字符型。表達(dá)式可以是任何類型,通常為整型或字符型。(2) 常量表達(dá)式為整型、常量表達(dá)式為整型、 字符型。字符型。(3) case后可以無(wú)語(yǔ)句,后可以無(wú)語(yǔ)句, (4)一種情況處理完后一種

10、情況處理完后, 一般應(yīng)使程序的執(zhí)行流程跳出一般應(yīng)使程序的執(zhí)行流程跳出switch結(jié)構(gòu)結(jié)構(gòu), 終終止止switch語(yǔ)句的執(zhí)行語(yǔ)句的執(zhí)行, 這可這可借助借助break語(yǔ)句語(yǔ)句完成。完成。 說(shuō)明說(shuō)明: : break語(yǔ)句的使用break語(yǔ)句形式語(yǔ)句形式為為: break; 一般使用了一般使用了break語(yǔ)句的語(yǔ)句的switch語(yǔ)句形式為語(yǔ)句形式為:switch(測(cè)試表達(dá)式測(cè)試表達(dá)式) case 常量表達(dá)式常量表達(dá)式1:語(yǔ)句:語(yǔ)句1; break; case 常量表達(dá)式常量表達(dá)式2:語(yǔ)句:語(yǔ)句2; break; . case 常量表達(dá)式常量表達(dá)式n:語(yǔ)句:語(yǔ)句n;break; default: 語(yǔ)句語(yǔ)

11、句n+1;#include main() char grade; float score; scanf(“%f”,&score) ; switch(int)(score/10.0) case 10: case 9: grade=A; case 8: grade=B; case 7: grade=C; case 6: grade=D; default: greade=E ; printf(“score=%f,grade=%c”,score,grade) ;例例6: 根據(jù)分?jǐn)?shù)給出考試成績(jī)的等級(jí)根據(jù)分?jǐn)?shù)給出考試成績(jī)的等級(jí) 90100分分 A 8089分分 B 7079分分 C 6069分分

12、D 60分以下分以下 E注意選擇表達(dá)式的構(gòu)造:注意選擇表達(dá)式的構(gòu)造:程序設(shè)計(jì)舉例程序設(shè)計(jì)舉例 例例 7 求出三個(gè)數(shù)中的最大值。求出三個(gè)數(shù)中的最大值。 數(shù)據(jù)數(shù)據(jù)分析分析: 輸入量輸入量: 三個(gè)數(shù)三個(gè)數(shù)x、 y、 z, float類型類型 輸出量輸出量: max, float類型類型 算法算法分析分析: 先假定第一個(gè)數(shù)是最大值先假定第一個(gè)數(shù)是最大值, 將其它數(shù)依次與最大值將其它數(shù)依次與最大值 比較比較, 如比最大值還大如比最大值還大, 這個(gè)數(shù)這個(gè)數(shù)是新的最大值。是新的最大值。 n先假定第一個(gè)數(shù)是最大值。先假定第一個(gè)數(shù)是最大值。includemain( ) float x, y, z; float

13、max; clrscr( ); scanf(%f%f %f, &x, &y, &z); max=x; if (ymax) max=y; if (zmax) max=z; printf(” max=%5.2f, max); 輸入四個(gè)整數(shù),輸出最大的數(shù)(用條件運(yùn)算符解)輸入四個(gè)整數(shù),輸出最大的數(shù)(用條件運(yùn)算符解) 分析:分析: 將四個(gè)數(shù)分成兩組將四個(gè)數(shù)分成兩組 依次求出每組兩個(gè)數(shù)中的最大值依次求出每組兩個(gè)數(shù)中的最大值 將兩組中的最大值進(jìn)行比較,求其最大值將兩組中的最大值進(jìn)行比較,求其最大值main() int a,b,c,d,max; scanf(“%d,%d,%d,%d”

14、,&a,&b,&c,&d); a=ab?a:b; c=cd?c:d; max=ac?a:c; printf(“max=%dn”,max);邏輯運(yùn)算符與邏輯表達(dá)式一、邏輯運(yùn)算符 ! 邏輯非 & 邏輯與 | 邏輯或二、優(yōu)先級(jí): ! & | &和| 運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符,而高于賦值運(yùn)算符。三、操作數(shù)是邏輯量(“真”或“假”,非0為真) (a+5)&-8 同為真時(shí)結(jié)果為真 !5 6|0 只要有一個(gè)為真時(shí)結(jié)果就為真四、邏輯表達(dá)式的運(yùn)算結(jié)果仍然是邏輯量:真或假;值為0,為假,真的值為1。 (見P34)例例 8 由三邊求三角

15、形面積和周長(zhǎng)。由三邊求三角形面積和周長(zhǎng)。 main( ) float a, b, c, hl ,s, l; scanf(%f, %f, %f, &a, &b, &c); if ( (a+bc)&(b+ca)&(c+ab)&(a0) &(b0) &(c0) ) l=a+b+c; hl=l * 0.5; s=sqrt(hl*(hla)*(hlb)*(hlc); printf(面積面積=%5.2f, 周長(zhǎng)周長(zhǎng)=%5.2f n, s, l); else printf(不能構(gòu)成三角形!不能構(gòu)成三角形!); 例9:從鍵盤輸入一個(gè)年份,判斷是否

16、為閏年。 閏年的條件閏年的條件是:是:1、年份能被、年份能被4整除但不能被整除但不能被100整除,或者整除,或者2、年份能被、年份能被100整除同時(shí)也能被整除同時(shí)也能被400整除。整除。 滿足其中任何一個(gè)條件時(shí)這個(gè)年份就是閏年。滿足其中任何一個(gè)條件時(shí)這個(gè)年份就是閏年。main( ) int year; scanf(“%d”,&year);if(year%4=0 & year%100!=0) | (year%100=0 & year%400=0) printf(“%d is a leap year”,year ); 數(shù)據(jù)數(shù)據(jù)分析分析: 輸入量輸入量: 年號(hào)年號(hào)year, 月號(hào)月號(hào)month, int 中間量中間量: 閏年標(biāo)志閏年標(biāo)志leap, int算法算法提示提示: 閏年:閏年: (year%100=0 & year%400=0) (year%4=0&year%100!= 0) 每月天數(shù)的輸出通過(guò)開關(guān)語(yǔ)句(每月天數(shù)的輸出通過(guò)開關(guān)語(yǔ)句(switch)處理。)處理。 例例 10: 輸入年和月輸入年和月, 輸出該年每月的天數(shù)。輸出該年每月的天數(shù)。 main( ) int year, month,day; scan

溫馨提示

  • 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)論