二級c語言第4章 三種基本結(jié)構(gòu)_第1頁
二級c語言第4章 三種基本結(jié)構(gòu)_第2頁
二級c語言第4章 三種基本結(jié)構(gòu)_第3頁
二級c語言第4章 三種基本結(jié)構(gòu)_第4頁
二級c語言第4章 三種基本結(jié)構(gòu)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4.1 c 語句概述 4.2 順序結(jié)構(gòu)及實現(xiàn) 4.3 選擇結(jié)構(gòu)及實現(xiàn) 4.4 循環(huán)結(jié)構(gòu)及實現(xiàn) 4.5 轉(zhuǎn)向語句 4.6 程序設計舉例 第四章 C程序流程設計 三種基本結(jié)構(gòu) 簡單語句簡單語句 空語句(;)空語句(;) 復合語句(復合語句(一條或多條語句一條或多條語句) 表達式語句(表達式;)表達式語句(表達式;) 函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);)函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);) 流程控制語句流程控制語句 結(jié)構(gòu)化語句結(jié)構(gòu)化語句 條件語句(條件語句(if語句,語句,switch語句)語句) while語句語句 do-while語句語句 for語句語句 非結(jié)構(gòu)化語句非結(jié)構(gòu)化語句 break語句語句

2、 continue語句語句 return語句語句 非限定轉(zhuǎn)向語句非限定轉(zhuǎn)向語句 (goto) 循環(huán)語句循環(huán)語句 n語句是語句是C C程序的重要組成部分,它表示程序程序的重要組成部分,它表示程序 執(zhí)行的步驟,實現(xiàn)程序的功能。執(zhí)行的步驟,實現(xiàn)程序的功能。 nC C語句以分號語句以分號“;”結(jié)尾結(jié)尾 n書寫自由,一行多條語句或一語句拆成多書寫自由,一行多條語句或一語句拆成多 行。語句之間用行。語句之間用“;”隔開就可以了。隔開就可以了。 nC語句分類語句分類 空語句:空語句: ; 程序控制語句程序控制語句(9種):種): if( )else switch for( ) while( ) dowhil

3、e( ) continue break return goto 分支 循環(huán) 輔助控制 如如 total=total+limit; a=3; printf(“Hello,world!n”); func( ); 函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);)函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);) 表達式語句:表達式表達式語句:表達式; n復合語句:用復合語句:用 括起來的一組語句又稱括起來的一組語句又稱語句組語句組 n一般形式:一般形式: 數(shù)據(jù)定義部分;數(shù)據(jù)定義部分; 執(zhí)行語句部分;執(zhí)行語句部分; n說明:說明: n“”后不加分號后不加分號 n在語法上視為一條語句在語法上視為一條語句 n復合語句可嵌套復合語句可嵌

4、套 例例 復合語句。復合語句。 #include “stdio.h” main() int xl, y2; int x3; printf(x=%d, y%dn,x, y); / * x3 */ printf(x=%d, y%dn,x, y); /* x=1 * / 程序運行結(jié)果為:程序運行結(jié)果為: x=3,y=2 x=1,y=1 4.2.1 4.2.1 順序結(jié)構(gòu)程序設計的思想順序結(jié)構(gòu)程序設計的思想 順序結(jié)構(gòu)是結(jié)構(gòu)化程序設計中最簡單、最常見的一種順序結(jié)構(gòu)是結(jié)構(gòu)化程序設計中最簡單、最常見的一種 程序結(jié)構(gòu)。順序結(jié)構(gòu)中,程序是按照各語句出現(xiàn)的次序順序程序結(jié)構(gòu)。順序結(jié)構(gòu)中,程序是按照各語句出現(xiàn)的次序順序

5、 執(zhí)行的。執(zhí)行的。 順序結(jié)構(gòu)程序通常由順序結(jié)構(gòu)程序通常由三部分三部分組成:組成: 輸入數(shù)據(jù):輸入數(shù)據(jù): 讓計算機為用戶進行運算,首先必須把已知讓計算機為用戶進行運算,首先必須把已知 的數(shù)據(jù),即讓計算機進行運算的對象,輸入到計算機中。的數(shù)據(jù),即讓計算機進行運算的對象,輸入到計算機中。 進行處理:進行處理:已知數(shù)據(jù)輸入到計算機的基礎(chǔ)上,根據(jù)問題已知數(shù)據(jù)輸入到計算機的基礎(chǔ)上,根據(jù)問題 的需要對其進行相應的運算處理。的需要對其進行相應的運算處理。 輸出結(jié)果輸出結(jié)果:讓計算機程序進行運算處理的目的是為了得:讓計算機程序進行運算處理的目的是為了得 到相應的結(jié)果,因此,必須將運算處理的結(jié)果輸出出來。到相應的

6、結(jié)果,因此,必須將運算處理的結(jié)果輸出出來。 4.2 4.2 順序結(jié)構(gòu)程序設計的思想順序結(jié)構(gòu)程序設計的思想 4.3.2 4.3.2 順序結(jié)構(gòu)程序舉例順序結(jié)構(gòu)程序舉例 以下程序有終端輸入兩個整數(shù)給變量以下程序有終端輸入兩個整數(shù)給變量x x和和y,y,然后輸然后輸 出出x x和和y y;交換;交換x x和和y y中的值后,再輸出中的值后,再輸出x x和和y y 源文件源文件e4-1.ce4-1.c main() main() int int x,y,t x,y,t; ; printf(“input printf(“input x”); scanf(“x scanf(“x=%d y=%dn”,); p

7、rintf(“x printf(“x=%d,y=%d,y=%dn”,x,y=%dn”,x,y);); t=x; x=y; y=t;/ t=x; x=y; y=t;/* *兩數(shù)交換兩數(shù)交換* */ / printf(“x printf(“x=%d,y=%d,y=%dn”,x,y=%dn”,x,y); ); 4.3 4.3 選擇型程序設計選擇型程序設計 4.3.1 if語句(條件選擇語句)語句(條件選擇語句) nif語句的三種形式 n形式一: u格式:if (expression) statement u執(zhí)行過程: expr statement 非0 =0 例:if (xy) printf(“%d

8、”,x); expr statement1statement2 非0=0 l形式二: u格式:if (expression) statement1 else statement2 u執(zhí)行過程: 例:if (xy) printf(“%d”,x); else printf(“%d”,y); n形式三(嵌套if語句) n格式: if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn expr1 statemnt1 非0 =0 expr2 expr3 statem

9、ntnstatemnt3statemnt2 非0 非0 =0 =0 u執(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; 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); l說明: uif后面的表達式類型任意 u語句可以是復合語句 u if(x) if(x!=0) if(!x) if(x=0) 例 考慮下面程序的輸

10、出結(jié)果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! /*e4_2.c*/ #include main() int x,y; printf(Enter an integer:); scanf(%d, y=x; if(yabsolute value:%dn,x,y); 例 求一個數(shù)的絕對值 運行:Enter an integer:-12 integer:-12-absolute value :12 /*ch4_3.c*/ #in

11、clude main() int a,b; printf(Enter integer a:); scanf(%d, printf(Enter integer b:); scanf(%d, if(a=b) printf(a=bn); else printf(a!=bn); 例 輸入兩個數(shù)并判斷兩數(shù)相等否 運行:Enter integer a:12 Enter integer b:12 a=b 運行:Enter integer a:12 Enter integer b:9 a!=b /*e4_4.c*/ #include main() char c; printf(Enter a characte

12、r:); c=getchar(); if(c=0 else printf(The character is other charactern); 例 判斷輸入字符種類 運行:Enter a character: The character is a control character 運行:Enter a character:8 The character is a digit 運行: Enter a character: D The character is a capital letter 運行: Enter a character: h The character is a lower

13、letter 運行: Enter a character:F1 The character is other character nif - else if - else 配對原則:配對原則:缺省缺省 時,時,elseelse總是總是 和它上面離它和它上面離它最近的最近的不帶不帶elseelse的的ifif配對,與配對,與書書 寫格式無關(guān)。寫格式無關(guān)。 if() if() if() else. else. else. vif語句嵌套: vif語句嵌套: l一般形式: if (expr1) if (expr2) statement1 else statement2 else if(expr3)

14、statement3 else statement4 內(nèi)嵌if 內(nèi)嵌if if (expr1) if (expr2) statement1 else statement2 內(nèi)嵌if if (expr1) if (expr2) statement1 else statement3 內(nèi)嵌if if (expr1) statement1 else if(expr3) statement3 else statement4 內(nèi)嵌if 例例 輸入兩數(shù)并判斷其大小關(guān)系輸入兩數(shù)并判斷其大小關(guān)系 /*e4_5.c*/ #include main() int x,y; printf(Enter integer x

15、,y:); scanf(%d,%d, if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn); 運行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y 例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 實現(xiàn)if else 正確配對方法:加 例例 考慮下面程序輸出結(jié)果考慮下面程

16、序輸出結(jié)果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(a60n”); break; . 例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 運行結(jié)果:score為5時,輸出: Very good! Good! Pass! Fail! data error! 例例 void main() in

17、t x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 運行結(jié)果:a=2,b=1 /*e4_6.c*/ #include main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n

18、: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例 根據(jù)輸入字母輸出字符串 4.4循環(huán)型程序設計循環(huán)型程序設計 n概述概述 C語言可實現(xiàn)循環(huán)的語句:語言可實現(xiàn)循環(huán)的語句: nwhile 語句語句 ndo while 語句語句 nfor 語句語句 ngoto語句語句 ngoto語句一般格式:語句一般格式: goto 語句標號; . 標號:語句; v功能:無條件轉(zhuǎn)移語句 v說明: l只能是任意合法的標識符,不能用整數(shù)作標號不能用整數(shù)作標號 l語句標號必須與此

19、goto語句在同一函數(shù)內(nèi),且唯一 l只能加在可執(zhí)行語句前面 l限制使用goto語句 例 用if 和goto語句構(gòu)成循環(huán),求 /*e4_7.c*/ #include main() int i,sum=0; i=1; loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum); sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050 循環(huán)初值 循環(huán)終值 循環(huán)變量增值 循環(huán)條件 循環(huán)體 while語句 v一般形式: while(表達式) 循環(huán)體語句; v執(zhí)行流程: expr 循環(huán)體 假(0) 真(非0

20、) while v特點:先判斷表達式,后執(zhí)行循環(huán)體特點:先判斷表達式,后執(zhí)行循環(huán)體 v說明:說明: l循環(huán)體有可能一次也不執(zhí)行循環(huán)體有可能一次也不執(zhí)行 l循環(huán)體可為任意類型語句循環(huán)體可為任意類型語句 l下列情況,退出下列情況,退出whilewhile循環(huán)循環(huán) u條件表達式不成立(為零)條件表達式不成立(為零) u循環(huán)體內(nèi)遇循環(huán)體內(nèi)遇break,return,gotobreak,return,goto l無限循環(huán)無限循環(huán): while(1): while(1) 循環(huán)體循環(huán)體; ; 例 用while循環(huán)求 100 1n n /*e4_8.c*/ #include main() int i,sum=

21、0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); 循環(huán)初值 循環(huán)終值循環(huán)變量增值 循環(huán)條件 循環(huán)體 例 顯示110的平方 /*e4_9.c*/ #include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 運行結(jié)果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 dowhile語句 v一般形式: do 循環(huán)體語句;循環(huán)體語句; while(表達式表達式); v執(zhí)行流程: do

22、 循環(huán)體 expr 假(0) 真(非0) while v特點:先執(zhí)行循環(huán)體,后判斷表達式特點:先執(zhí)行循環(huán)體,后判斷表達式 v說明:說明: l至少執(zhí)行一次循環(huán)體至少執(zhí)行一次循環(huán)體 ldowhile可轉(zhuǎn)化成可轉(zhuǎn)化成while結(jié)構(gòu)結(jié)構(gòu) expr 循環(huán)體 假(0) 真(非0) 循環(huán)體 While循環(huán) 例 用dowhile循環(huán)求 /*e4_10.c*/ #include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); 例例 while和和dowhile比較比較 #include main() int i,sum=

23、0; scanf(%d, do sum+=i; i+; while(i=10); printf(%d,sum); main() int i,sum=0; scanf(%d, while(i=10) sum+=i; i+; printf(%d,sum); for語句 v一般形式: for(expr1 ; expr2 ; expr3) 循環(huán)體語句; v執(zhí)行流程: expr2 循環(huán)體 假(0) 真(非0) for expr1 expr3 vfor語句一般應用形式: for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 循環(huán)體語句; v說明: lfor語句中expr1, expr2 ,expr3 類型任意

24、,都可省略,但分 號;不可省 l無限循環(huán): for(;) lfor語句可以轉(zhuǎn)換成while結(jié)構(gòu) expr1; while(expr2) 循環(huán)體語句; expr3; 例例 用用for循環(huán)求循環(huán)求 100 1n n #include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); 例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 運行結(jié)果:abcdefghij 例:#include main( ) int i=0; for(;i10;i+) putchar(

25、a+i); 例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 例例 梯形法求數(shù)值積分梯形法求數(shù)值積分p86 ); 1; 1()*(* )()(*5 . 0 )()()( 2 ) 1()( 2 ) 1()( 2 1 1 1 0 iniihiafhss bfafhs ihafhbfaf h hiafihaf h S hiafihaf h s n ab h n i n i i 迭代:0 y a a+ha+ih a+(i+1)h b

26、 f(x) dxxxf b a 2 4)( /*e4_11.c*/ #include #include math.h main() int i,n=10; float a,b,h,s; printf(nplease input a ,b (-2=b=2) n); scanf(%f%f, h=(b-a)/n; s=0.5*h*(sqrt(4-a*a)+sqrt(4-b*b); for(i=1;i=n-1;i+) s=s+h*(sqrt(4-a*a)+i*h); printf(output jifen %f,s); 循環(huán)的嵌套 v三種循環(huán)可互相嵌套,層數(shù)不限 v外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能

27、相互交叉 v嵌套循環(huán)的執(zhí)行流程 (1) while() while() . (2) do do while( ); . while( ); (3) while() do while( ); . (4) for( ; ;) do while(); while() . 內(nèi)循環(huán) 外循環(huán) 內(nèi)循環(huán) v嵌套循環(huán)的跳轉(zhuǎn) 例例 循環(huán)嵌套,輸出九九表循環(huán)嵌套,輸出九九表 123456789 123456789 24681012141618 369121518212427 91827364554637281 . i j i10 printf 假(0) 真(非0) i=1 j+ j=1 j10 真(非0) 假(0)

28、 i+ for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); 例例 循環(huán)嵌套,輸出九九表循環(huán)嵌套,輸出九九表 i j /*e4_12.c*/ #include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); n4.5 輔助控制語句輔助控制語句 nbreak語句語句 n功能:在功能:在循環(huán)語句和循環(huán)語句和switchswitch語句語句中中, ,

29、終止并跳出終止并跳出 循環(huán)體或開關(guān)體循環(huán)體或開關(guān)體 n說明:說明: nbreakbreak終止并跳出終止并跳出最近一層最近一層的結(jié)構(gòu)的結(jié)構(gòu) nbreakbreak不能用于循環(huán)語句和不能用于循環(huán)語句和switchswitch語句之外的語句之外的 任何其它語句之中任何其它語句之中 expr break; 假(0) 真(非0) while do break; . expr 假(0) 真(非0) while expr2 break; . 假(0) 真(非0) for expr1 expr3 switch expr 語句組1 break; 語句組2 break; 語句組n break; 語句組 brea

30、k; . const 1const 2const ndefault case 例例 break舉例:輸出圓面積,面積大于舉例:輸出圓面積,面積大于100時停止時停止 #define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); 例例 break舉例:舉例: 小寫字母轉(zhuǎn)換成小寫字母轉(zhuǎn)換成 大寫字母大寫字母,直至輸直至輸 入非字母字符入非字母字符 #include main() int i,j; char c; while(1) c=getchar(); if(c=

31、a else break; 4.5.2 continue語句語句 v功能:結(jié)束功能:結(jié)束本次循環(huán)本次循環(huán),跳過循環(huán)體中尚未,跳過循環(huán)體中尚未 執(zhí)行的語句,進行下一次是否執(zhí)行循環(huán)體的執(zhí)行的語句,進行下一次是否執(zhí)行循環(huán)體的 判斷判斷 v僅用于循環(huán)語句中僅用于循環(huán)語句中 expr continue; 假(0) 真(非0) while 真(非0) do continue; . expr 假(0) while expr2 continue; . 假(0) 真(非0) for expr1 expr3 例例 求輸入的十個整數(shù)中正數(shù)的個數(shù)及其平均值求輸入的十個整數(shù)中正數(shù)的個數(shù)及其平均值 #include ma

32、in() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d, if(a=0) continue; num+; sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num); 4.6 4.6 程序設計舉例程序設計舉例 P52 5.2程序舉例 為止最后一項的絕對值小于 的近似值,直到公式求例用 6 10 7 1 5 1 3 1 1 4 t=1,pi=0,n=1.0,s=1 當|t|1e-6 pi=pi+t n=n+2 s=-s t

33、=s/n pi=pi*4 輸出pi 分子:分子:1,-1,1,-1 分母:分母:1,3,5,7,. 例例 p61 5.10求求Fibonacci數(shù)列:數(shù)列:1,1,2,3,5,8,的前的前40個數(shù)個數(shù) )3( )2(12 ) 1(11 21 nFFF nF nF nnn f1=1,f2=1 for i=1 to 38 f3=f1+f2 輸出f3 f1=f2 f2=f3 1 5 34 233 1597 10946 75025 514229 3524578 24157817 1 8 55 377 2584 17711 121393 832040 5702887 39088169 2 13 89 610 4181 28657 196418 1346269 9227465 63245986 3 21 144 987 6765 46368 317811 2178309 14930352 102334155 P63

溫馨提示

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

評論

0/150

提交評論