C程序設計第三版循環(huán)(1)_第1頁
C程序設計第三版循環(huán)(1)_第2頁
C程序設計第三版循環(huán)(1)_第3頁
C程序設計第三版循環(huán)(1)_第4頁
C程序設計第三版循環(huán)(1)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、6.1 6.1 概述概述6.2 goto6.2 goto語句以及用語句以及用gotogoto語句構成循環(huán)語句構成循環(huán)6.3 6.3 用用whilewhile語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)6.4 6.4 用用do-whiledo-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán)6.5 6.5 用用for for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 6.6 6.6 循環(huán)的嵌套循環(huán)的嵌套6.7 6.7 幾種循環(huán)的比較幾種循環(huán)的比較6.8 break6.8 break語句語句continuecontinue和語句和語句6.9 6.9 程程 序序 舉舉 例例C程序設計(第三版)程序設計(第三版) http:/ 4什么是循環(huán)?什么是循

2、環(huán)?為什么要使用循環(huán)?為什么要使用循環(huán)?1001nyn問題問題1 1:問題問題2:2: 在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構是結(jié)構化程序設計的基本結(jié)構之一,它和順序結(jié)構、選擇結(jié)構共同作為各種復雜程序的基本構造單元。C程序設計(第三版)程序設計(第三版) http:/ 5 goto語句無條件轉(zhuǎn)向語句 goto goto 語句標號;語句標號; 語句標號用標識符表示,它的定名規(guī)則與變量名相同,即由字母、數(shù)字和下劃線組成,其第一個字符必須為字母或下劃線。 例如:例如:goto label_1; goto label_1; 合法合法; ; goto 123 goto 123; 不合法不合法. .C程序

3、設計(第三版)程序設計(第三版) http:/ 6 結(jié)構化程序設計方法主張限制使用goto語句,因為濫用goto語句將使程序流程無規(guī)律、可讀性差。一般來說,可以有兩種用途:(1) 與if語句一起構成循環(huán)結(jié)構;(2) 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。 但是這種用法不符合結(jié)構化原則,一般不宜采用,只有在不得已時(例如能大大提高效率)才使用。C程序設計(第三版)程序設計(第三版) http:/ 71001nn這里用的是“當型”循環(huán)結(jié)構,當滿足“i=100” 時執(zhí)行花括弧內(nèi)的循環(huán)體。 運行結(jié)果:運行結(jié)果:50505050C程序設計(第三版)程序設計(第三版) http:/ 8while語句用來實現(xiàn)“當型”循

4、環(huán)結(jié)構。一般形式:一般形式: while (while (表達式表達式) ) 語句語句 當表達式為非0值時,執(zhí)行while語句中的內(nèi)嵌語句。其特點是:先判斷表達式,后執(zhí)行語句。C程序設計(第三版)程序設計(第三版) http:/ 91001nn(1)循環(huán)體如果包含一個以上的語句,應該用花括弧括起來,以復合語句形式出現(xiàn).(2)在循環(huán)體中應有使循環(huán)趨向于結(jié)束的語句。 運行結(jié)果:運行結(jié)果:50505050C程序設計(第三版)程序設計(第三版) http:/ 10注意:注意:循環(huán)體如果包含一個以上的語句,應該用花括弧括起來,以復合語句形式出現(xiàn)。 (1) 在循環(huán)體中應有使循環(huán)趨向于結(jié)束的語句。如果無此語

5、句,則i的值始終不改變,循環(huán)永不結(jié)束。C程序設計(第三版)程序設計(第三版) http:/ 11 do-while語句的特點:先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。 一般形式一般形式: : do do 循環(huán)體語句 whilewhile (表達式);執(zhí)行過程:執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達式,當表達式的值為非零(“真”) 時,返回重新執(zhí)行循環(huán)體語句,如此反復,直到表達式的值等于0為止,此時循環(huán)結(jié)束。C程序設計(第三版)程序設計(第三版) http:/ 12運行結(jié)果:運行結(jié)果:505050501001nnC程序設計(第三版)程序設計(第三版) http:/ 13whilewh

6、ile語句和用語句和用do-whiledo-while語句的比較語句的比較: :在一般情況下,用while語句和用do-while語句處理同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達式一開始就為假(0值)時,兩種循環(huán)的結(jié)果是不同的。C程序設計(第三版)程序設計(第三版) http:/ 141001nn運行結(jié)果:運行結(jié)果:11 sum=55 sum=55 再運行一次:再運行一次: 1111sum=0sum=0運行結(jié)果:運行結(jié)果:11 sum=55 sum=55 再運行一次:再運行一次: 1111sum=11sum=11(1)當while后面的表達式的第一

7、次的值為“真”時,兩種循環(huán)得到的結(jié)果相同。否則,二者結(jié)果不相同。C程序設計(第三版)程序設計(第三版) http:/ 15 C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。 一般形式一般形式: : forfor(表達式1;表達式2;表達式3) 語句C程序設計(第三版)程序設計(第三版) http:/ 16forfor語句的執(zhí)行過程:語句的執(zhí)行過程: (1) 先求解表達式1。 (2) 求解表達式2,若其值為真(值為非0),則執(zhí) 行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下 面第(3)步。若為假(

8、值為0),則結(jié)束循環(huán), 轉(zhuǎn)到第(5)步。 (3) 求解表達式3。 (4) 轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。 (5) 循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句 C程序設計(第三版)程序設計(第三版) http:/ 17表達式表達式2?執(zhí)行語句語句成立成立不成立不成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達式3執(zhí)行表達式執(zhí)行表達式1循環(huán)初始條件循環(huán)初始條件循環(huán)控制條件循環(huán)控制條件循環(huán)體循環(huán)體 for語句等價于下列語句:語句等價于下列語句:表達式表達式1;while (表達式(表達式2) 語句;語句; 表達式表達式3; C程序設計(第三版)程序設計(第三版) http:/ 18 for語句最簡單的形式:for(

9、for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) ) 例如例如: : for(i=1;i=100;i+) sum=sum+i;相當于:相當于: i=1;i=1; while(i=100) while(i=100) sum=sum+i;i+; sum=sum+i;i+; 用for語句簡單、方便。 C程序設計(第三版)程序設計(第三版) http:/ 19(1) for語句的一般形式中的“表達式1”可以省略,此時應在for語句之前給循環(huán)變量賦初值。注意省略表達式1時,其后的分號不能省略。如 for(;i=100;i+) sum=sum+i; 執(zhí)行時,跳過“求解

10、表達式1”這一步,其他不變。C程序設計(第三版)程序設計(第三版) http:/ 20(2) 如果表達式2省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式2始終為真。例如:例如:for(i=1; ;i+) sum=sum+i; 表達式1是一個賦值表達式,表達式2空缺。它相當于: i=1; while(1) sum=sum+1;i+;C程序設計(第三版)程序設計(第三版) http:/ 21(3) 表達式3也可以省略,但此時程序設計者應另外設法保證循環(huán)能正常結(jié)束。如:如: for(i=1;i=100;) sum=sum+i;i+; 在上面的for語句中只有表達式1和表達式2,而沒有

11、表達式3。i+的操作不放在for語句的表達式3的位置處,而作為循環(huán)體的一部分,效果是一樣的,都能使循環(huán)正常結(jié)束。 C程序設計(第三版)程序設計(第三版) http:/ 22(4) 可以省略表達式1和表達式3,只有表達式2,即只給循環(huán)條件。如:如: for(;i=100;) while(i=100) sum=sum+i; 相當于 sum=sum+i; i+; i+; 在這種情況下,完全等同于while語句。可見for語句比while語句功能強,除了可以給出循環(huán)條件外,還可以賦初值,使循環(huán)變量自動增值等。C程序設計(第三版)程序設計(第三版) http:/ 23(5) 3個表達式都可省略,如:如:

12、 for(; ;) 語句 相當于 while(1) 語句 即不設初值,不判斷條件(認為表達式2為真值),循環(huán)變量不增值。無終止地執(zhí)行循環(huán)體。 C程序設計(第三版)程序設計(第三版) http:/ 24(6) 表達式1可以是設置循環(huán)變量初值的賦值表達式,也可以是與循環(huán)變量無關的其他表達式。如如: : for (sum=0;i=100;i+) sum=sum+i; 表達式3也可以是與循環(huán)控制無關的任意表達式。 C程序設計(第三版)程序設計(第三版) http:/ 25 表達式1和表達式3可以是一個簡單的表達式,也可以是逗號表達式,即包含一個以上的簡單表達式,中間用逗號間隔。如:如: for(sum

13、=0,i=1;i=100;i+) sum=sum+i;或 for(i=0,j=100;i=j;i+,j-) k=i+j; 表達式1和表達式3都是逗號表達式,各包含兩個賦值表達式,即同時設兩個初值,使兩個變量增值.C程序設計(第三版)程序設計(第三版) http:/ 26 在逗號表達式內(nèi)按自左至右順序求解,整個逗號表達式的值為其中最右邊的表達式的值。如如: : for(i=1;i=100;i+,i+) sum=sum+i;相當于 for(i=1;i=100;i=i+2) sum=sum+i; C程序設計(第三版)程序設計(第三版) http:/ 27(7) 表達式一般是關系表達式(如i=100)

14、或邏輯表達式 (如ab & xy),但也可以是數(shù)值表達式或字符表達 式,只要其值為非零,就執(zhí)行循環(huán)體。C程序設計(第三版)程序設計(第三版) http:/ 28 for(i=0;(c=getchar()!=n;i+=c); 在表達式2中先從終端接收一個字符賦給c,然后判斷此賦值表達式的值是否不等于n(換行符),如果不等于n,就執(zhí)行循環(huán)體。此for語句的循環(huán)體為空語句,把本來要在循環(huán)體內(nèi)處理的內(nèi)容放在表達式3中,作用是一樣的??梢奻or語句功能強,可以在表達式中完成本來應在循環(huán)體內(nèi)完成的操作。C程序設計(第三版)程序設計(第三版) http:/ 29 for( ;(c=getchar()

15、!=n;) printf(%c,c); for語句中只有表達式2,而無表達式1和表達式3。其作用是每讀入一個字符后立即輸出該字符,直到輸入一個“換行”為止。請注意,從終端鍵盤向計算機輸入時,是在按Enter鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩沖區(qū)中去的。運行情況:運行情況:ComputerComputer ( (輸入輸入) )Computer (Computer (輸出輸出) )而不是而不是CcoommppuutteerrCcoommppuutteerrC程序設計(第三版)程序設計(第三版) http:/ 30注意注意: : C語言中的for語句比其他語言(如BASIC,PASCAL)中的FOR語

16、句功能強得多。可以把循環(huán)體和一些與循環(huán)控制無關的操作也作為表達式1或表達式3出現(xiàn),這樣程序可以短小簡潔。但過分地利用這一特點會使for語句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無關的內(nèi)容放到for語句中。C程序設計(第三版)程序設計(第三版) http:/ 31 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構 稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。 三種循環(huán)(while循環(huán)、do-while循環(huán)和for循 環(huán))可以互相嵌套。C程序設計(第三版)程序設計(第三版) http:/ 32 下面幾種都是合法的形式:(1) while( ) (2) do (3) for(;) whi

17、le( ) do for(;) while( ); while( ); C程序設計(第三版)程序設計(第三版) http:/ 33(4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ) C程序設計(第三版)程序設計(第三版) http:/ 34(1)四種循環(huán)都可以用來處理同一問題,一般情況下它們可以互相代替。但一般不提倡用goto型循環(huán)。(2)在while循環(huán)和do-while循環(huán)中,只在while后面的括號內(nèi)指定循環(huán)條件,因此為了使循環(huán)能正常結(jié)束,應在循環(huán)體中包含使循環(huán)趨于結(jié)束的語句(如i+,或i=i+1等)。C

18、程序設計(第三版)程序設計(第三版) http:/ 35 for循環(huán)可以在表達式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達式3中。因此for語句的功能更強,凡用while循環(huán)能完成的,用for循環(huán)都能實現(xiàn)。 (3)用while和do-while循環(huán)時,循環(huán)變量初始化的操作應在while和do-while語句之前完成。而for語句可以在表達式1中實現(xiàn)循環(huán)變量的初始化。C程序設計(第三版)程序設計(第三版) http:/ 36(4)while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)(break語句和contin

19、ue語句見下節(jié))。而對用goto語句和if語句構成的循環(huán),不能用break語句和continue語句進行控制。 C程序設計(第三版)程序設計(第三版) http:/ 376.8.1 break6.8.1 break語句語句 break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句 一般形式:一般形式: break;break;注意注意: :break語句不能用于循環(huán)語句和switch語句之外的任何其他語句中。 C程序設計(第三版)程序設計(第三版) http:/ 38例例: float pi=3.14159;for(r=1;r100) break; printf(r=

20、%f,area=%fn,r,area); 程序的作用是計算程序的作用是計算r=1r=1到到r=10r=10時的圓面積,直到時的圓面積,直到面積面積areaarea大于大于100100為止。從上面的為止。從上面的forfor循環(huán)可以循環(huán)可以看到:當看到:當area100area100時,執(zhí)行時,執(zhí)行breakbreak語句,提前結(jié)語句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。C程序設計(第三版)程序設計(第三版) http:/ 396.8.2 continue6.8.2 continue語句語句 作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進

21、行下一次是否執(zhí)行循環(huán)的判定.一般形式:一般形式: continue;continue;C程序設計(第三版)程序設計(第三版) http:/ 40continue語句和break語句的區(qū)別 continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。 while(表達式1) for if(表達式2) continue; 0C程序設計(第三版)程序設計(第三版) http:/ 41 continue和break的區(qū)別 break語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。 while(表達式1) for if(表達式2) break; C程序設計(第三版)程序設計(第三版) htt

22、p:/ 421001nn當n能被3整除時,執(zhí)行continue語句,結(jié)束本次循環(huán)(即跳過printf函數(shù)語句),只有n不能被3整除時才執(zhí)行printf函數(shù)。C程序設計(第三版)程序設計(第三版) http:/ 43例例6.66.6用/41-1/3+1/5-1/7+公式求的近似值,直到某一項的絕對值小于為止。N-SN-S圖表示算法圖表示算法 C程序設計(第三版)程序設計(第三版) http:/ 441001nn運行結(jié)果:運行結(jié)果: pi= 3.141594C程序設計(第三版)程序設計(第三版) http:/ 45例例6.76.7 求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1,2兩

23、個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3) 算法如圖所示:1FC程序設計(第三版)程序設計(第三版) http:/ 461001nn運行結(jié)果:運行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 57022887 9227465 14930352 24157817 39088169 63245986 102334155 C程序設計(第三版)程序設計(第三版) h

溫馨提示

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

評論

0/150

提交評論