c語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)-ch5-循環(huán)課件(PPT 45頁(yè))_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)-ch5-循環(huán)課件(PPT 45頁(yè))_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)-ch5-循環(huán)課件(PPT 45頁(yè))_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)-ch5-循環(huán)課件(PPT 45頁(yè))_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)譚浩強(qiáng)-ch5-循環(huán)課件(PPT 45頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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、第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)Ch5:循環(huán)結(jié)構(gòu)程序設(shè)計(jì)7/20/2022第1頁(yè),共45頁(yè)。 主要內(nèi)容用while語(yǔ)句實(shí)現(xiàn)循環(huán)用do-while語(yǔ)句實(shí)現(xiàn)循環(huán)用for 語(yǔ)句實(shí)現(xiàn)循環(huán) 循環(huán)的嵌套幾種循環(huán)的比較break語(yǔ)句continue和語(yǔ)句程 序 舉 例Ch5:循環(huán)結(jié)構(gòu)程序設(shè)計(jì)7/20/2022第2頁(yè),共45頁(yè)。 概述什么是循環(huán)?為什么要使用循環(huán)?問(wèn)題1:?jiǎn)栴}2:求學(xué)生平均成績(jī) 分?jǐn)?shù)相加后除以課數(shù) 在許多問(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)造單元。7/20/2022第3頁(yè),共45頁(yè)。 循環(huán)控制結(jié)構(gòu)在程序中是指對(duì)某段程序或某條語(yǔ)

2、句根據(jù)條件重復(fù)執(zhí)行。C語(yǔ)言可實(shí)現(xiàn)循環(huán)的語(yǔ)句:while 語(yǔ)句do while 語(yǔ)句for 語(yǔ)句7/20/2022第4頁(yè),共45頁(yè)。 5.1 C語(yǔ)言的循環(huán)語(yǔ)句 5.1.1 用while語(yǔ)句實(shí)現(xiàn)循環(huán)while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。一般形式: while (表達(dá)式) 語(yǔ)句 當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。其特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行語(yǔ)句。7/20/2022第5頁(yè),共45頁(yè)。特點(diǎn):先判斷表達(dá)式,后執(zhí)行循環(huán)體說(shuō)明:循環(huán)體有可能一次也不執(zhí)行循環(huán)體可為任意類型語(yǔ)句;循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。 下列情況,退出while循環(huán)條件表達(dá)式不成

3、立(為零)循環(huán)體內(nèi)遇break,return,goto無(wú)限循環(huán): while(1) 循環(huán)體;在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。7/20/2022第6頁(yè),共45頁(yè)。例 用while循環(huán)求 /*ch5_1.c*/#include main() 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)體7/20/2022第7頁(yè),共45頁(yè)。例 顯示110的平方/*ch5_2.c*/#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i

4、,i*i); i+; 運(yùn)行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=1007/20/2022第8頁(yè),共45頁(yè)。 5.1.2 用do-while語(yǔ)句實(shí)現(xiàn)循環(huán) do-while語(yǔ)句的特點(diǎn):先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。 一般形式: do 循環(huán)體語(yǔ)句 while (表達(dá)式);執(zhí)行過(guò)程:先執(zhí)行一次指定的循環(huán)體語(yǔ)句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”) 時(shí),返回重新執(zhí)行循環(huán)體語(yǔ)句,如此反復(fù),直到表達(dá)式的值等于0為止,此時(shí)循環(huán)結(jié)束。7/20/2022第9頁(yè),共45頁(yè)。特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式說(shuō)明:至少執(zhí)

5、行一次循環(huán)體dowhile可轉(zhuǎn)化成while結(jié)構(gòu)expr循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)7/20/2022第10頁(yè),共45頁(yè)。while語(yǔ)句和用do-while語(yǔ)句的比較: 在一般情況下,用while語(yǔ)句和用do-while語(yǔ)句處理同一問(wèn)題時(shí),若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達(dá)式一開始就為假(0值)時(shí),兩種循環(huán)的結(jié)果是不同的。7/20/2022第11頁(yè),共45頁(yè)。例 while和dowhile比較main()int sum=0,i; scanf(%d,&i); while (i=10) sum=sum+i; i+; printf(sum=%d

6、n,sum);main()int sum=0,i; scanf(%d,&i); do sum=sum+i; i+; while (i=10) printf(sum=%dn,sum);當(dāng)i10時(shí), 兩程序的結(jié)果不同。首次條件為真,兩者等價(jià);首次條件為假,dowhile執(zhí)行一次。7/20/2022第12頁(yè),共45頁(yè)。 5.1.3 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句。一般形式: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句7/20/2022第13頁(yè),共45頁(yè)。

7、5.1.3 用for 語(yǔ)句實(shí)現(xiàn)循環(huán)for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句for語(yǔ)句的執(zhí)行過(guò)程: (1) 先求解表達(dá)式1。 (2) 求解表達(dá)式2,若其值為真(值為非0),則執(zhí) 行for語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行下 面第(3)步。若為假(值為0),則結(jié)束循環(huán), 轉(zhuǎn)到第(5)步。 (3) 求解表達(dá)式3。 (4) 轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。 (5) 循環(huán)結(jié)束,執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句 7/20/2022第14頁(yè),共45頁(yè)。 5.1.4 for 語(yǔ)句的形式變化注意: C語(yǔ)言中的for語(yǔ)句比其他語(yǔ)言(如BASIC,PASCAL)中的FOR語(yǔ)句功能強(qiáng)得多??梢园蜒h(huán)體和一些與循環(huán)控制無(wú)關(guān)的

8、操作也作為表達(dá)式1或表達(dá)式3出現(xiàn),這樣程序可以短小簡(jiǎn)潔。但過(guò)分地利用這一特點(diǎn)會(huì)使for語(yǔ)句顯得雜亂,可讀性降低,最好不要把與循環(huán)控制無(wú)關(guān)的內(nèi)容放到for語(yǔ)句中。7/20/2022第15頁(yè),共45頁(yè)。for語(yǔ)句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體語(yǔ)句;說(shuō)明:for語(yǔ)句可以轉(zhuǎn)換成while結(jié)構(gòu)#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum);expr1;while(expr2)循環(huán)體語(yǔ)句;expr3;for語(yǔ)句中expr1, expr2 ,expr3 類型任意,都可省略,但分號(hào)

9、;不可省若表達(dá)式1缺省,則從表達(dá)式2開始執(zhí)行。若表達(dá)式2缺省,則認(rèn)為表達(dá)式2始終為真,循環(huán)無(wú)終止進(jìn)行。7/20/2022第16頁(yè),共45頁(yè)。例如: for ( ;i=100;i+) sum=sum+i; for (i=1; ;i+) sum=sum+i; for (i=1;i=100; ) sum=sum+i;i+; for ( ;i=100; ) sum=sum+i;i+; for ( ; ; ) 語(yǔ)句省略表達(dá)式1省略表達(dá)式2省略表達(dá)式3省略表達(dá)式1,3循環(huán)無(wú)終止進(jìn)行7/20/2022第17頁(yè),共45頁(yè)。三個(gè)表達(dá)式可以是語(yǔ)言的任意型表達(dá)式。例: for ( sum=0,i=1;i=100;i

10、+) sum=sum+i; for (i=0,j=100 ;i=j;i+,j-) k =i+j; for (i=0 ;(c=getchar()!=n;i+=c) ; 逗號(hào)表達(dá)式逗號(hào)表達(dá)式空語(yǔ)句7/20/2022第18頁(yè),共45頁(yè)。例:#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( ) int i=0; for(;i10;) putchar(a+(i+); 例:

11、#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 7/20/2022第19頁(yè),共45頁(yè)。main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); #includemain() char c; for(;(c=getchar()!=n;) printf(%c ,c);#include main() int i,c; for(i=0;(c=getchar()!=n;i+=3)printf(%c ,i+c);7/20/2022第20頁(yè),共45頁(yè)。三種循

12、環(huán)結(jié)構(gòu)用于反復(fù)的進(jìn)行某個(gè)操作,直到條件不成立時(shí)為止。(1)while (表達(dá)式) 語(yǔ)句系列(2)do 語(yǔ)句系列 while (表達(dá)式);(3)for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句系列使用循環(huán)語(yǔ)句要注意和數(shù)組的結(jié)合:關(guān)鍵在于找出數(shù)組下標(biāo)和循環(huán)變量之間的關(guān)系。三種循環(huán)功能完全等價(jià):(1),(2)兩種主要用于循環(huán)次數(shù)不定。而(3)主要用于循環(huán)次數(shù)確定的情況。7/20/2022第21頁(yè),共45頁(yè)。 5.2 break語(yǔ)句和continue語(yǔ)句 5.2.1 break語(yǔ)句 break語(yǔ)句可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句 一般形式: break;注意:brea

13、k只能終止并跳出最近一層的結(jié)構(gòu);break語(yǔ)句不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其他語(yǔ)句中。 7/20/2022第22頁(yè),共45頁(yè)。exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)while7/20/2022第23頁(yè),共45頁(yè)。expr2break;.假(0)真(非0)forexpr1expr3switchexpr語(yǔ)句組1break;語(yǔ)句組2break;語(yǔ)句組nbreak;語(yǔ)句組break;.const 1const 2const ndefaultcase 7/20/2022第24頁(yè),共45頁(yè)。 5.2 break語(yǔ)句和continue語(yǔ)句

14、 例: float pi=3.14159;for(r=1;r100) break; printf(r=%f,area=%fn,r,area); 程序的作用是計(jì)算r=1到r=10時(shí)的圓面積,直到面積area大于100為止。從上面的for循環(huán)可以看到:當(dāng)area100時(shí),執(zhí)行break語(yǔ)句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。7/20/2022第25頁(yè),共45頁(yè)。 5.2 break語(yǔ)句和continue語(yǔ)句 5.2.2 continue語(yǔ)句 作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定.僅用于循環(huán)語(yǔ)句中.一般形式: continue;7/20/2

15、022第26頁(yè),共45頁(yè)。exprcontinue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexpr2continue;.假(0)真(非0)forexpr1expr37/20/2022第27頁(yè),共45頁(yè)。例 求輸入的十個(gè)整數(shù)中正數(shù)的個(gè)數(shù)及其平均值/*ch5_3.c*/#include main() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d,&a);if(a=0) continue;num+;sum+=a; printf(%d plus integers sum :%6.0fn,num

16、,sum); printf(Mean value:%6.2fn,sum/num);7/20/2022第28頁(yè),共45頁(yè)。 5.2 break語(yǔ)句和continue語(yǔ)句 continue語(yǔ)句和break語(yǔ)句的區(qū)別 continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。 while(表達(dá)式1) for if(表達(dá)式2) continue; 07/20/2022第29頁(yè),共45頁(yè)。 5.2 break語(yǔ)句和continue語(yǔ)句 continue和break的區(qū)別 break語(yǔ)句則是結(jié)束整個(gè)循環(huán)過(guò)程,不再判斷執(zhí)行循環(huán)的條件是否成立。 while(表達(dá)式1) for if(表達(dá)式2) break

17、; 7/20/2022第30頁(yè),共45頁(yè)。 5.3 循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。三種循環(huán)(while循環(huán)、do-while循環(huán)和for循 環(huán))可以互相嵌套。7/20/2022第31頁(yè),共45頁(yè)。 5.3 循環(huán)的嵌套下面幾種都是合法的形式:(1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( ); 7/20/2022第32頁(yè),共45頁(yè)。 5.3 循環(huán)的嵌套(4) while( ) (5) for(;) (6) do do while(

18、 ) for(;) while( ) while( ) 7/20/2022第33頁(yè),共45頁(yè)。幾種循環(huán)的比較(1)四種循環(huán)都可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替。 (2)在while循環(huán)和do-while循環(huán)中,只在while后面的括號(hào)內(nèi)指定循環(huán)條件,因此為了使循環(huán)能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié)束的語(yǔ)句(如i+,或i=i+1等)。7/20/2022第34頁(yè),共45頁(yè)。幾種循環(huán)的比較 for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達(dá)式3中。因此for語(yǔ)句的功能更強(qiáng),凡用while循環(huán)能完成的,用for循環(huán)都能實(shí)現(xiàn)。 (3)用while

19、和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語(yǔ)句之前完成。而for語(yǔ)句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。7/20/2022第35頁(yè),共45頁(yè)。幾種循環(huán)的比較(4)while循環(huán)、do-while循環(huán)和for循環(huán),可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán)(break語(yǔ)句和continue語(yǔ)句見(jiàn)下節(jié))。7/20/2022第36頁(yè),共45頁(yè)。 5.4 循環(huán)程序設(shè)計(jì) 例: 用/41-1/3+1/5-1/7+公式求的近似值,直到某一項(xiàng)的絕對(duì)值小于10-6為止。N-S圖表示算法 7/20/2022第37頁(yè),共45頁(yè)。# include # in

20、clude void main() int s;float n,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)1e-6) pi=pi+t; n=n+2; s= -s; t=s/n;pi = pi*4;printf(pi=%10.6fn,pi);7/20/2022第38頁(yè),共45頁(yè)。例: 求Fibonacci數(shù)列前40個(gè)數(shù)。這個(gè)數(shù)列有如下特點(diǎn):第1,2兩個(gè)數(shù)為1,1。從第3個(gè)數(shù)開始,該數(shù)是其前面兩個(gè)數(shù)之和。即:F(1)=1 (n=1)F(2)=1 (n=2)F(n)=F(n-1)+F(n-2) (n3) 算法如圖所示: 5.4 循環(huán)程序設(shè)計(jì) 7/20/2022第39頁(yè),共45頁(yè)。例: 判斷m是否素?cái)?shù)。算法思想:讓m被2到sqrt(m)除,如果m能被2sqrt(m)之中任何一個(gè)整數(shù)整除,則提前結(jié)束循環(huán),此時(shí)i

溫馨提示

  • 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)論