3 程序控制結(jié)構(gòu)(第2講)fzhh.ppt_第1頁
3 程序控制結(jié)構(gòu)(第2講)fzhh.ppt_第2頁
3 程序控制結(jié)構(gòu)(第2講)fzhh.ppt_第3頁
3 程序控制結(jié)構(gòu)(第2講)fzhh.ppt_第4頁
3 程序控制結(jié)構(gòu)(第2講)fzhh.ppt_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2020/9/23,1,程序控制結(jié)構(gòu),第三章第2講 分支結(jié)構(gòu),2,2020/9/23,本章要點,什么是分支結(jié)構(gòu)?它的作用是什么? 分支結(jié)構(gòu)兩種形式 if()else語句 switch() 語句,分支結(jié)構(gòu),3,2020/9/23,回顧 6.5.3 關(guān)系表達式,比較兩個操作數(shù),比較的結(jié)果:真(1)、假(0) x y x = y x != y 優(yōu)先級 算術(shù)運算符 = = != 賦值運算符 左結(jié)合,a b = c ch a + 1 d = a + b c 3 = x = 5,等價于 (a b)= c 等價于 ch (a + 1) 等價于 d= (a + b) c) 等價于(3 = x) = 5,1、關(guān)

2、系運算符,4,2020/9/23,回顧 6.5.4 邏輯表達式,邏輯運算符: else 語句2;,if (表達式) 語句1;,1.普通流程圖及形式,7,2020/9/23,if (表達式) 語句1; else 語句2;,if (表達式) 語句1;,2.N-S流程圖及形式,8,2020/9/23,3. 實例1 判斷數(shù)字的奇偶性,例3-7 輸入1個整數(shù),判斷該數(shù)是奇數(shù)還是偶數(shù)。,分析:滿足偶數(shù)的條件是:number % 2 = 0,9,2020/9/23,源程序-判斷數(shù)字的奇偶性,#include int main(void) int number; printf(Enter a number:

3、); scanf(%d, ,Enter a number: 329 Tne number is odd.,Enter a number: 1028 Tne number is even.,10,2020/9/23,3. 實例2 求絕對值,例3-8 輸入1個整數(shù),輸出它的絕對值 。,分析:當(dāng)number = 0時,?,11,2020/9/23,源程序-求絕對值,#include int main(void) int number; printf(Enter a number: ); scanf(%d, ,Enter a number: 10 The absolute value is 10.,E

4、nter a number: -300 The absolute value is 300.,12,2020/9/23,3.2 多分支結(jié)構(gòu)與嵌套的 if 語句,多分支結(jié)構(gòu)有多種形式 實現(xiàn)方法: 嵌套的 if 語句 else if 語句-在else中嵌套 嵌套的 if - else語句-在if中嵌套 switch語句,13,2020/9/23,分段計算水費,例3-3 分段計算水費,流程圖如下頁所示,14,2020/9/23,y=0,x0,x=15,y=4*x/3,y=2.5*x-10.5,x=15,y=2.5*x-10.5,x0,y=0,y=4*x/3,if(x0) y=0; else if(x

5、15) y=4*x/3; else y=2.5*x-10.5;,if(x15) if(x0) y=0; else y=4*x/3; else y=2.5*x-10.5;,15,2020/9/23,if(x0) y=0; else if(x15) y=4*x/3; else y=2.5*x-10.5;,if(x15) if(x0) y=0; else y=4*x/3; else y=2.5*x-10.5;,x =15,真,假,y=0;,y=2.5*x -10.5;,真,假,x 0,y=4*x/3;,if (表達式1) 語句1; else if(表達式2) 語句2; else if(表達式n-1)

6、 語句n-1; else 語句n;,else if 語句,n個分支需要n-1次比較,if(表達式1) if(表達式2) 語句1; else 語句2; else if(表達式3) 語句3; else 語句4;,嵌套的 if else 語句,17,2020/9/23,畫出流程圖,寫出對應(yīng)程序段,2種嵌套if語句的比較,1 2 3 4 5 6 7,2種嵌套if語句的比較,20,2020/9/23,else 和 if 的匹配,if(表達式1) if(表達式2) 語句1; else 語句2 ; else if(表達式3) 語句3; else 語句4;,if(表達式1) if(表達式2) 語句1; els

7、e /*與哪一個if匹配?*/ if(表達式3) 語句3; else 語句4;,else 與最靠近它的、沒有與別的 else 匹配過的 if 匹配,if(表達式1) if(表達式2) 語句1 else if(表達式3) 語句3 else 語句4,21,2020/9/23,改變 else 和 if 的配對,例3-10 改寫下列 if 語句,使 else 和第1個 if 配對。 if (x2) if(x1) y =x+1; else y =x+2;,使用花括號,構(gòu)造一個復(fù)合語句。 if (x 2) if(x1) y =x+1; else y =x+2;,增加空的else。 if (x2) if(x

8、1) y =x+1; else; else y = x + 2;,每條語句的執(zhí)行條件?,22,2020/9/23,小練習(xí) 有以下程序 #include int main() int x,y,z; x=1;y=2;z=3; if(xy) if(yz) printf(%d,z); elseprintf(%d,y); printf(%dn,x); 程序的運行結(jié)果是,23,2020/9/23,3.2.2 switch語句,輸出以下數(shù)學(xué)函數(shù)的值:,考慮一下用if-else語句如何實現(xiàn)? 該問題分支較多,用嵌套的if語句層數(shù)多,程序可讀性降低。 比較的條件具有確定值,C語言提供switch語句直接處理多分

9、支選擇。,24,2020/9/23,if(x=0) y=0; else if(x=1) y=1; else if(x=2) y=2; else y=2x;,switch(x) case 0:y=0; case 1:y=1; case 2:y=2; default:y=2x; ,25,2020/9/23,3.2.2 switch語句,處理多分支選擇問題,3種情況,是否使用break 1、在switch語句的每個語句段中都使用break語句 switch(表達式) case 常量表達式1:語句段1; break; case 常量表達式2:語句段2 ; break; . case 常量表達式n:語句

10、段n ; break; default : 語句段n+1 ; break; ,只執(zhí)行一個語句段,即多選一結(jié)構(gòu),break可用于退出switch結(jié)構(gòu),26,2020/9/23,求解簡單表達式,例3-5 輸入一個形式如“操作數(shù) 運算符 操作數(shù)”的四則運算表達式,輸出運算結(jié)果。 例如: 輸入:3.1+4.8 輸出:7.9 輸入:4*9 輸出:36.0,27,2020/9/23,分析過程,定義變量:兩個操作數(shù)、一個操作符、運算結(jié)果。 初始化:輸入兩個操作數(shù)、一個操作符。 計算、數(shù)據(jù)處理:但在寫程序時,運算符是什么不知道的,而結(jié)果跟運算符密切相關(guān),因此要采用分支結(jié)構(gòu),分支的標(biāo)準(zhǔn)是不同的運算符號。 輸出。

11、,28,2020/9/23,源程序,Type in an expression: 3.1+4.8 =7.9,# include int main(void) char operator; double value1, value2; printf(Type in an expression: ); scanf(%lf%c%lf, ,如果除數(shù)為0?,29,2020/9/23,2、在switch中不使用break,switch(表達式) case 常量表達式1:語句段1; case 常量表達式2:語句段2; . case 常量表達式n:語句段n; default : 語句段n+1; ,若某個 ca

12、se 常量表達式與switch中表達式值相等,執(zhí)行完其所屬語句段后,其后所有的語句段都會被執(zhí)行。,30,2020/9/23,3、在switch的某些語句段中使用break,switch(表達式) case 常量表達式1:語句段1;break; case 常量表達式2:語句段2; . case 常量表達式n:語句段n;break; default : 語句段n+1; ,找到與switch表達式值相符的case后,執(zhí)行它所屬的語句段,順序執(zhí)行后面的case的語句段,直到遇到break為止,31,2020/9/23,例3-6 輸入10個字符,分別統(tǒng)計出其中空格或回車、數(shù)字和其他字符的個數(shù)。,分析:

13、字符 、字符n、字符數(shù)字0、1、2、3、4、5、6、7、8、9,其它字符。 1)定義變量ch(char類型),各類字符的個數(shù); 2)賦初值:輸入一個字符 3)處理過程:統(tǒng)計,如果是空格,空格個數(shù)+1,如果是回車,回車個數(shù)+1,依次類推。 4)再輸入一個字符 ,即返回2),直到輸入并判斷了10個字符 5)輸出各類字符的個數(shù)。,32,2020/9/23,int main(void) int blank, digit, i, other; char ch; blank = digit = other = 0; printf(Enter 10 characters: ); for(i = 1; i =

14、 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 : case 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=6,33,2020/9/23,1. 如果color值為R,那么下面這個隨便構(gòu)造的switch語句會打印出什么? switch(color) case R: printf(redn); case B: printf(bluen); case Y: printf(yellown); ,練習(xí)題,34,2020/9/23,2.有以下程序 int main(void) int i

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論