C語(yǔ)言一日一學(xué)第6課——循環(huán)控制(1).doc_第1頁(yè)
C語(yǔ)言一日一學(xué)第6課——循環(huán)控制(1).doc_第2頁(yè)
C語(yǔ)言一日一學(xué)第6課——循環(huán)控制(1).doc_第3頁(yè)
C語(yǔ)言一日一學(xué)第6課——循環(huán)控制(1).doc_第4頁(yè)
C語(yǔ)言一日一學(xué)第6課——循環(huán)控制(1).doc_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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.1 概述 5 s. G; t& _7 M什么是循環(huán)? + o- ) N f. H% Z為什么要使用循環(huán)? . 5 P8 c( V+ J# o問(wèn)題1: 5 L* R0 E# ( o, rA) Z u7 w# u問(wèn)題2:求學(xué)生平均成績(jī)分?jǐn)?shù)相加后除以課數(shù) + . o$ ) n& V1 ( N在許多問(wèn)題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。 3 L* v( A# C% j2 j/ _1.2goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) ! R# W0 W9 f 3 K; u3 j6 Vgoto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為goto 語(yǔ)句標(biāo)號(hào); 語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的定名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,其第一個(gè)字符必須為字母或下劃線。 . n$ Z* Y W. j( i( I& 6 f5 例如:gotolabel_1; 合法; 8 ; Q C3 A+ V; H* x goto123; 不合法. ! p0 U5 l4 P2 _4 j4 g結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句,因?yàn)闉E用goto語(yǔ)句將使程序流程無(wú)規(guī)律、可讀性差.一般來(lái)說(shuō),可以有兩種用途: $ I4 P5 Y( Q% S% 1 f(1) 與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu); ( d- x# T * ZG9 A; j, o(2) 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。 0 O2 l: ?% P1 E# _* gO 但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(shí)(例如能大大提高效率)才使用. 4 e5 m, X6 g- U/ y例1.1用if語(yǔ)句和goto語(yǔ)句構(gòu)成循環(huán),求1到100的和 1. void main( ) 2. 3. int i, sum=0; 4. i=1; 5. loop: 6. if(i=100) 7. sum=sum+i; 8. i+; 9. goto loop; 10. 11. printf(%dn,sum); 12. 復(fù)制代碼運(yùn)行結(jié)果:5050 ( J+ S. y A9 / f4 _/ N說(shuō)明:這里用的是“當(dāng)型”循環(huán)結(jié)構(gòu),當(dāng)滿足“i=100” 時(shí)執(zhí)行花括弧內(nèi)的循環(huán)體。 1 B4 r: I6 Aa U& u1.3用while語(yǔ)句實(shí)現(xiàn)循環(huán) v8 v6 i7 b R3 S* 5 C& K1 e& Z6 t9 f( M7 q( v. ?9 Fu1 l& h3 u! awhile語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。 1 4 w4 _: I7 ! T一般形式: ( 2 t( O; I) while (表達(dá)式) 語(yǔ)句 2 d& U% p9 q% J+ M9 - g/ |% s當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。 7 h& j0 c, D3 i- q C: * N7 Y7 v6 h% t* B0 K1 c: A; x, F E例1.2求1到100的和 1. #include 2. void main() 3. 4. int i,sum=0; 5. i=1; 6. while (i=100) 7. 8. sum=sum+i; 9. i+; 10. 11. printf(%dn,sum); 12. 復(fù)制代碼運(yùn)行結(jié)果:5050 : |# r4 I/ k: i6 ; 8 M! t說(shuō)明:(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句 X. P) U4 r/ a. B4 : Z注意: M/ j6 c i# R) (1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。 3 v! m A4 R% R$ |% n+ k3 w: T9 K/ m(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。如果無(wú)此語(yǔ)句,則i的值始終不改變,循環(huán)永不結(jié)束。 / a+ K5 d% f4 a5 I& b q1.4 用do-while語(yǔ)句實(shí)現(xiàn)循環(huán) ( F! 4 _0 T. : T9 k/ M1 B9 Y* Rdo-while語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。 W2 I. P& 1 W7 B* U- q一般形式: do 7 3 Y( B3 W. I8 E( jE7 Q/ S; g5 a 循環(huán)體語(yǔ)句 ( o& H0 Q) 9 q6 M while (表達(dá)式); # L ( r g4 o+ * Q2 5 |8 $ b j) H b* u2 執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”) 時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。 + k0 v$ ?# n% k6 U ( a) y* B% J( n例1.3求1到100的和 1. #include 2. void main() 3. 4. int i,sum=0; 5. i=1; 6. do 7. 8. sum=sum+i; 9. i+; 10. 11. while(i=100); 12. printf(%dn,sum); 13. 復(fù)制代碼運(yùn)行結(jié)果:5050 ) L& p% g+ x/ y+ 0 E$ o, I! lwhile語(yǔ)句和用do-while語(yǔ)句的比較:在一般情況下,用while語(yǔ)句和用do-while語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達(dá)式一開始就為假(0值)時(shí),兩種循環(huán)的結(jié)果是不同的。 8 Vr& ?* Q3 K% b5 i5 _ m# J( 例1.4 while和do-while循環(huán)的比較 1. (1) 2. #include (2) #include 3. void main ( ) void main( ) 4. 5. int sum=0,i; int sum=0,i; 6. scanf(“%d,&i); scanf(”%d,&i); 7. while (i=10) do 8. 9. sum=sum+I; sum=sum+i; 10. i+; i+; 11. while (i=10); 12. printf(“sum=%dn,sum); printf(“sum=%dn”,sum); 13. 14. 15. 復(fù)制代碼運(yùn)行結(jié)果: 9 E, ?. F1 F: I5 G9 b1 0 J/ d; D! h0 tk$ z4 H% X& ysum=55 0 # r( T+ y8 N$ ( D再運(yùn)行一次: % CI/ M, E+ O11 % y, N) j# A2 Bf9 Vsum=0 & j- i% 1 _# O7 M運(yùn)行結(jié)果: # 3 h7 k Z; ) - a1 % O) u( X; - l4 sum=55 l( y v c) A* u再運(yùn)行一次: % R7 6 r) x0 W; o, X% G# p11 : k9 K6 E% C6 h0 L6 Z5 W) t! T$ lsum=11 ) Z/ i; G3 R- F說(shuō)明:(1)當(dāng)while后面的表達(dá)式的第一次的值為“真”時(shí),兩種循環(huán)得到的結(jié)果相同。否則,二者結(jié)果不相同。 3 n0 ; m/ % : G1.5 用for 語(yǔ)句實(shí)現(xiàn)循環(huán) Q L% S% rS+ FC語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句。 b3 ; B6 Cw. O, I; R3 D一般形式: / V, T6 sE0 j for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句 : w L1 X5 G8 V. H) P8 lfor語(yǔ)句的執(zhí)行過(guò)程: 6 x& |- e% J; Qr(1) 先求解表達(dá)式1。 1 S2 ; 0 L- d8 Q8 U(2) 求解表達(dá)式2,若其值為真(值為非0),則執(zhí)行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下面第(3)步。若為假(值為0),則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。 ( - 2 C J4 j& J6 k(3) 求解表達(dá)式3。 & n3 m+ o/ gl6 o4 d% k0 c9 l5 s(4) 轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。 * . Q& m* d8 U2 C; A i/ F8 ) C, t(5) 循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句 4 i4 j ! X8 |6 L, e$ r7 y9 for語(yǔ)句等價(jià)于下列語(yǔ)句: 1. 表達(dá)式1; 2. while (表達(dá)式2) 3. 4. 語(yǔ)句; 5. 表達(dá)式3; 6. 復(fù)制代碼, K7 J- z- Z+ C) Nfor語(yǔ)句最簡(jiǎn)單的應(yīng)用形式也就是最易理解的如下形式: & Q$ o: H: I7 8 i/ R5 W1 g+ x for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 1 t+ p) t- U. j7 E, H: 例如: for(i=1;i=100;i+) sum=sum+i; % N) W+ v) D5 7 J它相當(dāng)于以下語(yǔ)句: : h; i0 i$ U7 Z- x i=1; 3 m1 b$ p* W* a; * E: v8 y) y while(i=100) 9 o1 t M. I* _g. | sum=sum+i;i+; : f! q q G, 1 S3 H0 n顯然,用for語(yǔ)句簡(jiǎn)單、方便。 $ S( t L9 l/ R, A! d) 2 H說(shuō)明: . _5 e* |6 Y7 C(1)for語(yǔ)句的一般形式中的“表達(dá)式1”可以省略,此時(shí)應(yīng)在for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。如 0 w4 Y5 1 c. r$ L v for(;i=100;i+)sum=sum+i; # _* q9 4 G- L執(zhí)行時(shí),跳過(guò)“求解表達(dá)式1”這一步,其他不變。 + d. L/ o |/ L; d2 _(2) 如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。也就是認(rèn)為表達(dá)式2始終為真。 $ R/ r! b7 ( v2 K8 4 V0 例如:for(i=1; ;i+) sum=sum+i; 表達(dá)式1是一個(gè)賦值表達(dá)式,表達(dá)式2空缺。它相當(dāng)于: , gn+ E% R- n( Q i=1; 1 R0 E8 j2 R$ Z% x4 A5 V9 Q, O% while(1) . N8 k- Q1 D7 m sum=sum+1;i+; & s, u% S) V4 A$ / Y1 P# (3) 表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如: , K: _% 6 x5 x$ K, M* d for(i=1;i=100;) 3 A x7 & a5 T7 | sum=sum+i;i+; + z / s O8 i在上面的for語(yǔ)句中只有表達(dá)式1和表達(dá)式2,而沒(méi)有表達(dá)式3。i+的操作不放在for語(yǔ)句的表達(dá)式3的位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。 , I0 ; EI- f/ O+ ?5 W0 j! S9 w(4) 可以省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件。如: 1 E1 Y T1 F O$ bfor(;i=100;) while(i=100) # z7 s) |: u4 A0 / p& e5 g 0 n c& N( R2 K9 l sum=sum+i; 相當(dāng)于 sum=sum+i; * C$ v) R. y& U$ B+ / i+; i+; N, 1 E8 ! S0 o/ T : U& _6 D- $ ) ?7 P, Y在這種情況下,完全等同于while語(yǔ)句??梢奻or語(yǔ)句比while語(yǔ)句功能強(qiáng),除了可以給出循環(huán)條件外,還可 以賦初值,使循環(huán)變量自動(dòng)增值等。 + b t4 y, p( L e8 c+ K(5)3個(gè)表達(dá)式都可省略,如: $ L- Se# T* j6 I: e% v for(; ;) 語(yǔ)句 R( W, F$ D# I7 s( j& xd8 d 相當(dāng)于 8 h: W8 c! W3 S6 o0 - t+ P8 B5 m8 e while(1) 語(yǔ)句 , f; a+ G/ u: J 即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值), 循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。 ! z+ * 5 s! T2 : j1 w# v(6)表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。如: # K2 S/ p( o$ ) V! m& h3 Yz for (sum=0;i=100;i+) & |/ k r7 Z: i% $ - 2 sum=sum+i; ; f3 x) D9 V3 U$ R& l表達(dá)式3也可以是與循環(huán)控制無(wú)關(guān)的任意表達(dá)式。 4 U2 V( |8 h0 _i0 7 o7 M . , q# G- p$ W) % x; z表達(dá)式1和表達(dá)式3可以是一個(gè)簡(jiǎn)單的表達(dá)式,也可以是逗號(hào)表達(dá)式,即包含一個(gè)以上的簡(jiǎn)單表達(dá)式,中間用 S; m9 2 |# V. v逗號(hào)間隔。如: b- D1 d! h9 X p) H for(sum=0,i=1;i=100;i+) sum=sum+i; 1 K6 X; |. X S9 C4 g U7 Q或 . ( d2 d* v/ F n for(i=0,j=100;i=j;i+,j-) k=i+j; qo6 + P3 y h+ v, w表達(dá)式1和表達(dá)式3都是逗號(hào)表達(dá)式,各包含兩個(gè)賦值表達(dá)式,即同時(shí)設(shè)兩個(gè)初值,使兩個(gè)變量增值. 在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,整個(gè)逗號(hào)表達(dá)式的值為其中最右邊的表達(dá)式的值。如: 3 ! Tm v9 j8 q for(i=1;i=100;i+,i+) sum=sum+i; U; : G+ Y- B. G) z相當(dāng)于 7 / P6 w+ g% V3 3 ; X for(i=1;i=100;i=i+2) sum=sum+i; , U9 t* n L3 h4 m2 Z(7) 表達(dá)式一般是關(guān)系表達(dá)式(如i=100)或邏輯表達(dá)式(如ab & xy),但也可以是數(shù)值表達(dá)式或字符表表式,只要其值為非零,就執(zhí)行循環(huán)體。 . T& g6 HC8 o1 U |- w for(i=0;(c=getchar()!=n;i+=c); : T9 O, y# - C在表達(dá)式2中先從終端接收一個(gè)字符賦給c,然后判斷此賦值表達(dá)式的值是否不等于n(換行符),如果 & g, 6 a1 k4 - 3 r3 n* h不等于n,就執(zhí)行循環(huán)體。注意:此for語(yǔ)句的循環(huán)體為空語(yǔ)句,把本來(lái)要在循環(huán)體內(nèi)處理的內(nèi)容放在表達(dá)式3中,作用是一樣的。可見for語(yǔ)句功能強(qiáng),可以在表達(dá)式中完成本來(lái)應(yīng)在循環(huán)體內(nèi)完成的操作。 + U) G! n7 n6 T; i: 5 & S( for(;(c=getchar()!=n;)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論