C語言程序設(shè)計(jì)C程序流程設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)C程序流程設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)C程序流程設(shè)計(jì)_第3頁
C語言程序設(shè)計(jì)C程序流程設(shè)計(jì)_第4頁
C語言程序設(shè)計(jì)C程序流程設(shè)計(jì)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第四章 C程序流程設(shè)計(jì)C語句概述程序的三種基本結(jié)構(gòu)選擇型程序設(shè)計(jì) 循環(huán)型程序設(shè)計(jì) 輔助控制語句4.14.1 C C語句概述語句概述 C語句語句:以以“;”作分隔符作分隔符,編譯后產(chǎn)生機(jī)器指令編譯后產(chǎn)生機(jī)器指令. C語句分類語句分類 表達(dá)式語句:表達(dá)式加分號構(gòu)成。表達(dá)式語句:表達(dá)式加分號構(gòu)成。 函數(shù)調(diào)用語句:由一個函數(shù)調(diào)用加分號構(gòu)成。函數(shù)調(diào)用語句:由一個函數(shù)調(diào)用加分號構(gòu)成。空語句:空語句: ;程序控制語句程序控制語句(9種):種):if( )else switchfor( )while( )dowhile( )continuebreakgotoreturn分支分支循環(huán)循環(huán)輔助控制輔助控制如如 t

2、otal=total+limit; a=3; func( ); printf(“Hello,world!n”); 用用 括起來的一組語句括起來的一組語句一般形式:一般形式: 數(shù)據(jù)說明部分;數(shù)據(jù)說明部分; 執(zhí)行語句部分;執(zhí)行語句部分; 說明:說明:“”后不加分號后不加分號語法上和單一語句相同語法上和單一語句相同復(fù)合語句可嵌套復(fù)合語句可嵌套復(fù)合語句:復(fù)合語句:4.2 程序的三種基本結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(制使用無條件轉(zhuǎn)移語句(goto) 結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)

3、成的程序叫結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序叫 優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率 三種基本結(jié)構(gòu)三種基本結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)ABAB流程圖N-S圖PAB真假PBA真假kA1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)l當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)l直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假假真真當(dāng)當(dāng)P為真為真AAP真真假假A直到直到P為真為真注:A,B,A1.An可以是一個簡單語句,也可以是一個基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) if語句(條件選擇語句)語句(條件選擇語句)

4、if語句的三種形式語句的三種形式 形式一:形式一:格式:格式:if (expression) statement執(zhí)行過程:執(zhí)行過程:4.34.3 選擇型程序設(shè)計(jì)選擇型程序設(shè)計(jì)exprstatement非非0=0例:例:if (xy)if (xy) printfprintf(“%(“%d”,xd”,x););exprstatement1statement2非非0=0形式二:形式二:格式:格式:if(expression)statement1 else statement2執(zhí)行過程:執(zhí)行過程:例:例:if (xy) max=x; else max=y;形式三:形式三:格式:格式:if ( expr

5、1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0執(zhí)行過程:執(zhí)行過程: 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 如:如:

6、if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);uifif后面的表達(dá)式類型任意后面的表達(dá)式類型任意u語句可以是復(fù)合語句語句可以是復(fù)合語句u if(x) if(x!=0) if(!x) if(x=0)例例 考慮下面程序的輸出結(jié)果考慮下面程序的輸出結(jié)果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!說明

7、:說明:if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4內(nèi)嵌內(nèi)嵌if內(nèi)嵌內(nèi)嵌ifif (expr1) if (expr2) statement1 else statement2內(nèi)嵌內(nèi)嵌ifif (expr1) if (expr2) statement1else statement3 內(nèi)嵌內(nèi)嵌ifif (expr1) statement1else if(expr3) statement3 else statement4內(nèi)嵌內(nèi)嵌ifif語句嵌套#include main

8、() int x,y; printf(Enter integer x,y:); scanf(%d,%d,&x,&y); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);運(yùn)行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y例例 輸入兩數(shù)并判斷其大小關(guān)系輸入兩數(shù)并判斷其大小關(guān)系if else 配對原則:配對原則:缺省缺省 時,時,else總是和它上面離它最近總是和它上面離它最近的未配對的的未配對的if配對配對if()if()if()else

9、.else.else.修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實(shí)現(xiàn)實(shí)現(xiàn)if else 正確配對方法:加正確配對方法:加 實(shí)現(xiàn)if else 正確配對方法例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);v一般形式:switch( 表達(dá)式) case E1: 語句組 1; break; case E2: 語句組 2; break; . case En: 語句組 n; break; default: 語句組 ; v執(zhí)行過程:switch表達(dá)式表達(dá)式語

10、句組語句組1語句組語句組2語句組語句組n語句組語句組.E 1E 2Endefaultcase switch語句(開關(guān)分支語句)v:lE1,E2,E1,E2,EnEn是常量表達(dá)式(數(shù)據(jù)類型可以是整型、是常量表達(dá)式(數(shù)據(jù)類型可以是整型、字符型和枚舉型)字符型和枚舉型), ,且值必須互不相同且值必須互不相同l語句標(biāo)號作用,必須用語句標(biāo)號作用,必須用break跳出跳出lcase后可包含多個可執(zhí)行語句,且不必加后可包含多個可執(zhí)行語句,且不必加 lswitchswitch可嵌套可嵌套l多個多個case可共用一組執(zhí)行語句可共用一組執(zhí)行語句如:如: case A: case B: case C: printf

11、(“score60n”); break; .說明:例例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:score為為5時,輸出:時,輸出: Very good! Good! Pass! Fail! data error!例子(例子(1)#include main() int c; printf(Enter m or n

12、or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例子(例子(2) 根據(jù)輸入字母輸出字符串根據(jù)輸入字母輸出字符串概述概述C語言可實(shí)現(xiàn)循環(huán)的語句:語言可實(shí)現(xiàn)循環(huán)的語句:while 語句語句do while 語句語句for 語句語句4.4 循環(huán)型程序設(shè)計(jì)v一般形式:while(表達(dá)式) 循環(huán)體

13、語句;v執(zhí)行流程:expr循環(huán)體循環(huán)體假假(0)真真(非非0)whilewhile語句v特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體v說明:說明:l循環(huán)體有可能一次也不執(zhí)行循環(huán)體有可能一次也不執(zhí)行l(wèi)循環(huán)體可為任意類型語句循環(huán)體可為任意類型語句l下列情況,退出下列情況,退出whilewhile循環(huán)循環(huán)u條件表達(dá)式不成立(為零)條件表達(dá)式不成立(為零)u循環(huán)體內(nèi)遇循環(huán)體內(nèi)遇break,return,gotobreak,return,gotol無限循環(huán)無限循環(huán): while(1): while(1) 循環(huán)體循環(huán)體; ;While語句特點(diǎn)和說明語句特點(diǎn)和說明#include mai

14、n() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循環(huán)初值循環(huán)初值循環(huán)終值循環(huán)終值循環(huán)變量增值循環(huán)變量增值循環(huán)條件循環(huán)條件循環(huán)體循環(huán)體例子例子#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 運(yùn)行結(jié)果:運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100例例 顯示顯示110的平方的平方v一般形式:do 循環(huán)體語句; while(表達(dá)式);v執(zhí)行流程:do

15、循環(huán)體循環(huán)體expr假假(0)真真(非非0)whiledowhile語句v特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式v說明:l至少執(zhí)行一次循環(huán)體ldowhile可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體循環(huán)體假假(0)真真(非非0)循環(huán)體循環(huán)體While循環(huán)循環(huán)dowhile語句特點(diǎn)和說明v一般形式:for(expr1 ; expr2 ; expr3) 循環(huán)體語句;v執(zhí)行流程:expr2循環(huán)體循環(huán)體假假(0)真真(非非0)forexpr1expr3for語句v:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體語句;循環(huán)體語句;v說明:說明:lfor語句中語句中exp

16、r1, expr2 ,expr3 類型任意,都可類型任意,都可省略,但分號;不可省省略,但分號;不可省l無限循環(huán)無限循環(huán): for(;)lfor語句可以轉(zhuǎn)換成語句可以轉(zhuǎn)換成while結(jié)構(gòu)結(jié)構(gòu)expr1;while(expr2)循環(huán)體語句;循環(huán)體語句;expr3;for語句一般應(yīng)用形式語句一般應(yīng)用形式例例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 運(yùn)行結(jié)果:abcdefghij例:例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); 例:例:#include main(

17、) int i=0; for(;i10;) putchar(a+(i+); 例:例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 例子v三種循環(huán)可互相嵌套三種循環(huán)可互相嵌套, ,層數(shù)不限層數(shù)不限v外層循環(huán)可包含兩個以上內(nèi)循環(huán)外層循環(huán)可包含兩個以上內(nèi)循環(huán), ,但不能相互交叉但不能相互交叉v嵌套循環(huán)的執(zhí)行流程嵌套循環(huán)的執(zhí)行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); w

18、hile() . 內(nèi)循環(huán)內(nèi)循環(huán)外循環(huán)外循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)v嵌套循環(huán)的跳轉(zhuǎn)嵌套循環(huán)的跳轉(zhuǎn)禁止:禁止:l從外層跳入內(nèi)層從外層跳入內(nèi)層l跳入同層的另一循環(huán)跳入同層的另一循環(huán)l向上跳轉(zhuǎn)向上跳轉(zhuǎn)循環(huán)的嵌套循環(huán)的嵌套i10printf假假(0)真真(非非0)i=1j+j=1j10真真(非非0)假假(0)i+for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);外循環(huán)外循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)循環(huán)的嵌套(圖解)循環(huán)的嵌套(圖解)例題:啤酒和飲料例題:啤酒和飲料 啤酒每罐啤酒每罐2.3元,飲料每罐元,飲料每罐1.9元。小明元。小明買了若干啤酒和飲料,一共花了

19、買了若干啤酒和飲料,一共花了82.3元。元。 我們還知道他買的啤酒比飲料的數(shù)量我們還知道他買的啤酒比飲料的數(shù)量少,請你計(jì)算他買了幾罐啤酒。少,請你計(jì)算他買了幾罐啤酒。 4.5 輔助控制語句 break語句語句 功能:在循環(huán)語句和功能:在循環(huán)語句和switch語句中語句中,終止并終止并跳出循環(huán)體或開關(guān)體跳出循環(huán)體或開關(guān)體 說明:說明:break只能終止并跳出最近一層的結(jié)構(gòu)只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語句和不能用于循環(huán)語句和switch語句語句之外的任何其它語句之中之外的任何其它語句之中4.54.5 輔助控制語句(圖解輔助控制語句(圖解1 1)exprbreak;假假(0)真

20、真(非非0)whiledobreak;.expr假假(0)真真(非非0)whileexpr2break;.假假(0)真真(非非0)forexpr1expr3switchexpr語句組語句組1break;語句組語句組2break;語句組語句組nbreak;語句組語句組break;.const 1const 2const ndefaultcase 4.54.5 輔助控制語句(圖解輔助控制語句(圖解2 2)v功能:結(jié)束本次循環(huán),跳過尚未執(zhí)行的語句,進(jìn)功能:結(jié)束本次循環(huán),跳過尚未執(zhí)行的語句,進(jìn)行下一次是否執(zhí)行循環(huán)體的判斷行下一次是否執(zhí)行循環(huán)體的判斷v僅用于循環(huán)語句中僅用于循環(huán)語句中exprcontin

21、ue;假假(0)真真(非非0)while真真(非非0)docontinue;.expr假假(0)whileexpr2continue;.假假(0)真真(非非0)forexpr1expr3continue語句語句 continue和和break使用舉例:使用舉例:以下程序的運(yùn)行結(jié)果以下程序的運(yùn)行結(jié)果是是 。#include main() int n; for(n=0;n+) if(1=n%2) printf(&);continue; printf(#); if(n4) break; A &#&#&# B #&#&#& C #&#&a

22、mp;#&# D &#&#&#&C語言的循環(huán)語句語言的循環(huán)語句 下面說法錯誤的是:(下面說法錯誤的是:( )A. dowhile語句至少執(zhí)行一次循環(huán)語句至少執(zhí)行一次循環(huán)B. break語句可以跳出語句可以跳出switch語句和循環(huán)語句語句和循環(huán)語句C. 每個每個if一定有一個一定有一個else和它對應(yīng)和它對應(yīng)D. 每個每個else一定有一個一定有一個if和它對應(yīng)和它對應(yīng) 當(dāng)執(zhí)行以下程序時當(dāng)執(zhí)行以下程序時 。int a=1;do a=a*a; while(!a);A 循環(huán)體將執(zhí)行一次循環(huán)體將執(zhí)行一次 B 循環(huán)體將執(zhí)行兩次循環(huán)體將執(zhí)行兩次C 循環(huán)體將執(zhí)行無限

23、次循環(huán)體將執(zhí)行無限次 D 系統(tǒng)將提示有語法錯誤系統(tǒng)將提示有語法錯誤C語言的循環(huán)語句語言的循環(huán)語句 以下敘述正確的是以下敘述正確的是 。A do-while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替B do-while語句構(gòu)成的循環(huán)只能語句構(gòu)成的循環(huán)只能break語句退出語句退出C 用用do-while語句構(gòu)成的循環(huán),在語句構(gòu)成的循環(huán),在while后的表達(dá)式為非零時結(jié)后的表達(dá)式為非零時結(jié)束循環(huán)束循環(huán)D 用用do-while語句構(gòu)成的循環(huán),在語句構(gòu)成的循環(huán),在while后的表達(dá)式為零時結(jié)束后的表達(dá)式為零時結(jié)束循環(huán)循環(huán) int x=-1;do x=x*x; while(x0);上面程序?qū)?zhí)行的循環(huán)次數(shù)為上面程序?qū)?zhí)行的循環(huán)次數(shù)為 。A 循環(huán)體將執(zhí)行無限次循環(huán)體將執(zhí)行無限次 B 循環(huán)體將執(zhí)行兩次循環(huán)體將執(zhí)行兩次C 循環(huán)體將執(zhí)行一次循環(huán)體將執(zhí)行一次 D 系統(tǒng)將提示有語法錯誤系統(tǒng)將提示有語法錯誤C語言的循環(huán)

溫馨提示

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

評論

0/150

提交評論