《循環(huán)結構序設計》ppt課件_第1頁
《循環(huán)結構序設計》ppt課件_第2頁
《循環(huán)結構序設計》ppt課件_第3頁
《循環(huán)結構序設計》ppt課件_第4頁
《循環(huán)結構序設計》ppt課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7章循環(huán)構造程序設計7.1 7.1 循環(huán)的概念循環(huán)的概念7.2 7.2 實現(xiàn)循環(huán)的語句實現(xiàn)循環(huán)的語句 7.3 break7.3 break和和continuecontinue語句語句7.4 7.4 循環(huán)的嵌套循環(huán)的嵌套7.5 7.5 循環(huán)構造程序設計舉例循環(huán)構造程序設計舉例 7.1 7.1 循環(huán)的概念循環(huán)的概念 當所要處理的問題存在反復執(zhí)行內(nèi)容時,當所要處理的問題存在反復執(zhí)行內(nèi)容時,應該運用循環(huán)構造來實現(xiàn),詳細的設計步驟可應該運用循環(huán)構造來實現(xiàn),詳細的設計步驟可歸納如下。歸納如下。1構造循環(huán)體。將問題中需求反復執(zhí)行的部構造循環(huán)體。將問題中需求反復執(zhí)行的部分,利用分,利用C言語規(guī)那么歸納出一組

2、程序段。在歸言語規(guī)那么歸納出一組程序段。在歸納的過程中應充分利用變量是一個變化的量的納的過程中應充分利用變量是一個變化的量的概念。如本列中變量概念。如本列中變量score在不同的時辰代表的在不同的時辰代表的是不同窗生的成果。是不同窗生的成果。 2尋覓控制循環(huán)的變量。有的標題循環(huán)的次尋覓控制循環(huán)的變量。有的標題循環(huán)的次數(shù)是確定的,可以運用計數(shù)器來控制循環(huán);有的數(shù)是確定的,可以運用計數(shù)器來控制循環(huán);有的標題循環(huán)的次數(shù)不是確定的,那么運用計數(shù)器就標題循環(huán)的次數(shù)不是確定的,那么運用計數(shù)器就不適宜了,設計者應從標題中去尋覓規(guī)那么變化不適宜了,設計者應從標題中去尋覓規(guī)那么變化的量來控制循環(huán)體完成規(guī)定的次數(shù)

3、。的量來控制循環(huán)體完成規(guī)定的次數(shù)。3找出控制變量的找出控制變量的3個要素。個要素。 循環(huán)控制變量的初值。循環(huán)控制變量的初值。 循環(huán)的條件。循環(huán)的條件。 使循環(huán)趨于終了的部分。使循環(huán)趨于終了的部分。7.2 7.2 實現(xiàn)循環(huán)的語句實現(xiàn)循環(huán)的語句77.22.1 wh1 whil le語句語句whwhil le語句是實現(xiàn)當型構造循環(huán)的語句,其普通方式為語句是實現(xiàn)當型構造循環(huán)的語句,其普通方式為whwhil le( (邏輯量邏輯量) ) 循環(huán)體語句循環(huán)體語句 其中,其中,whwhil le是是CC言語的關鍵字,語句中的邏輯量為循言語的關鍵字,語句中的邏輯量為循環(huán)條件。環(huán)條件。whwhil le語句的流程

4、圖如圖語句的流程圖如圖77.22所示。所示。 NY 條件 P 循環(huán)體 A 循 環(huán) 條 件 ( P ) 循 環(huán) 體 ( A ) 運用運用while語句實現(xiàn)循環(huán)時,語句中的邏輯量語句實現(xiàn)循環(huán)時,語句中的邏輯量對應于循環(huán)條件對應于循環(huán)條件P,循環(huán)體語句對應于循環(huán)體,循環(huán)體語句對應于循環(huán)體A。while語句執(zhí)行時,首先判別邏輯量的值,假設邏語句執(zhí)行時,首先判別邏輯量的值,假設邏輯量為輯量為1,那么首先執(zhí)行循環(huán)體語句,然后繼續(xù),那么首先執(zhí)行循環(huán)體語句,然后繼續(xù)判別邏輯量;假設邏輯量為判別邏輯量;假設邏輯量為0,那么終了循環(huán),那么終了循環(huán),執(zhí)行循環(huán)的后續(xù)語句。執(zhí)行循環(huán)的后續(xù)語句。 例例77.3 3 求求1

5、1到到1100的和。的和。根據(jù)流程圖寫出程序:根據(jù)流程圖寫出程序:mamain()() int t i,sumsum; sum sum=0; i=11; wh whil le( (i =1100) ) sum sum=sumsum+i; i+; pr printf(tf(% %dn,sum)sum); sum=0,i=1 i=100 sum=sum+i i+ 輸出累加和 sum 圖7.3 例7.3的N-S流程圖 例例77.4 4 求求n!。!。mamain()() float fac float fac; int t i,n; fac fac=11; i=22; sca scanf(f(% %

6、d,& &n) ); wh whil le( (i =n) ) fac fac=facfac*i; i+; pr printf(tf(n!=% %.0f fn,fac)fac); fac=1,i=2 當i=n 時 fac=fac*i i+ 輸出階乘fac 圖7.4 例7.4的N-S流程圖 77.22.2 2 do o-whwhil le語句語句 do o-whwhil le語句是實現(xiàn)直到型循環(huán)構造的語句,其語句是實現(xiàn)直到型循環(huán)構造的語句,其普通方式為:普通方式為: do o 循環(huán)體語句循環(huán)體語句whwhil le( (邏輯量邏輯量) ); do o-whwhil le語句的流程

7、圖如圖語句的流程圖如圖77.66所示。所示。 循環(huán)體 A 條件 P 循 環(huán) 體 (A) 循 環(huán) 條 件 (P) 運用運用do-while語句實現(xiàn)循環(huán)時,語句中語句實現(xiàn)循環(huán)時,語句中的邏輯量對應于循環(huán)條件的邏輯量對應于循環(huán)條件P,循環(huán)體語句對,循環(huán)體語句對應于循環(huán)體應于循環(huán)體A。do-while語句執(zhí)行時,首先語句執(zhí)行時,首先執(zhí)行循環(huán)體語句,然后判別邏輯量,假設邏執(zhí)行循環(huán)體語句,然后判別邏輯量,假設邏輯量為輯量為1,那么繼續(xù)執(zhí)行循環(huán)體語句;假設,那么繼續(xù)執(zhí)行循環(huán)體語句;假設邏輯量為邏輯量為0,那么終了循環(huán),執(zhí)行循環(huán)的后,那么終了循環(huán),執(zhí)行循環(huán)的后續(xù)語句。續(xù)語句。 例例77.9 求兩個數(shù)的最大公約

8、數(shù)。求兩個數(shù)的最大公約數(shù)。 輸 入 m,n mn Y N m n r=m%n r!=0 m=n,n=r r=m%n 輸 出 最 大 公 約 數(shù) n 輸 入 m,n mn Y N m n r=m%n m=n,n=r r!=0 輸 出 最 大 公 約 數(shù) m a當型構造 b直到型構造圖7.8 例子的兩種構造的N-S圖 根據(jù)流程圖可得到程序:根據(jù)流程圖可得到程序: main() main() int m,n,r; int m,n,r; scanf(%d,%d,&m,&n); scanf(%d,%d,&m,&n); if(mn) if(mn) r=m,m=n,n=r;

9、r=m,m=n,n=r; r=m%n; do while(r!=0) m=n; r=m%n; n=r; m=n; r=m%n; n=r; while(r!=0); printf(%dn,n); printf(%dn,m); 77.22.3 for3 for語句語句 for for語句是實現(xiàn)當型循環(huán)構造的語句,語句是實現(xiàn)當型循環(huán)構造的語句,forfor語句語句是言語所提供的功能更強、運用更廣泛的一種循環(huán)是言語所提供的功能更強、運用更廣泛的一種循環(huán)語句。其普通方式為:語句。其普通方式為: for(for(表達式表達式11;邏輯量邏輯量;表達式表達式2) 2) 循環(huán)體語句;循環(huán)體語句; 表達式表達式

10、11通常用來給循環(huán)變量賦初值,普通是賦通常用來給循環(huán)變量賦初值,普通是賦值表達式。也允許在值表達式。也允許在forfor語句外給循環(huán)變量賦初值,語句外給循環(huán)變量賦初值,此時可以省略該表達式。邏輯量通常是循環(huán)條件,普此時可以省略該表達式。邏輯量通常是循環(huán)條件,普通為關系表達式或邏輯表達式,也可以是恣意通為關系表達式或邏輯表達式,也可以是恣意“確定確定的值。表達式的值。表達式22通常是使循環(huán)趨于終了的部分,普通常是使循環(huán)趨于終了的部分,普通是賦值表達式。通是賦值表達式。for 語句對應的傳統(tǒng)流程如圖語句對應的傳統(tǒng)流程如圖7.9所示。所示。for語句的執(zhí)行過程如下:語句的執(zhí)行過程如下:1求解表達式求

11、解表達式1。2判別邏輯量,假設為判別邏輯量,假設為1,那么執(zhí)行循環(huán)體,那么執(zhí)行循環(huán)體語句,然后執(zhí)行第語句,然后執(zhí)行第3步;假設為步;假設為0,那么終了循,那么終了循環(huán),執(zhí)行循環(huán)的后續(xù)語句。環(huán),執(zhí)行循環(huán)的后續(xù)語句。3求解表達式求解表達式2。轉向第。轉向第2步執(zhí)行。步執(zhí)行。從從for語句的方式可以看出語句的方式可以看出for后的括號內(nèi)三項內(nèi)后的括號內(nèi)三項內(nèi)容分別對應于循環(huán)的三要素,能明晰地描畫循容分別對應于循環(huán)的三要素,能明晰地描畫循環(huán)。我們可以采取圖環(huán)。我們可以采取圖7.10所示的方式來描畫所示的方式來描畫for語句對應的語句對應的N-S流程圖。流程圖。圖7.9 for 語句的傳統(tǒng)流程圖 圖7.

12、10 for語句的N-S流程圖 Y N 邏輯量 求解表達式 1 循環(huán)體語句 循環(huán)的后續(xù)語句 求解表達式 2 for( 表 達 式 1;邏 輯 量 ;表 達 式 2) 循 環(huán) 體 語 句 例例77.11 11 求求 。xxxd)(502main() float sum=0,s=0; float x,h; scanf(%f,&h); for(x=0;x5;x=x+h) s=(x*x+x+(x+h)*(x+h)+x+h)*h/2 sum=sum+s; printf(jifen=%.2fn,sum);圖7.11 例7.11的N-S流程圖 s u m 0 輸入h f o r ( x 0 ; x

13、0;n-) ) a a+; pr printf(tf(%8%8d,aa*2)2); pr printf(tf(n) );33可省去表達式可省去表達式22,應該在循環(huán)體部分添加使循環(huán)趨于終了,應該在循環(huán)體部分添加使循環(huán)趨于終了部分。部分。例例77.1313mamain()() int at a,n; a a=0; for( for(n=9;n 0;) ) pr printf(tf(%8%8d,aa*a)a); n-; pr printf(tf(n) );4省略邏輯量,那么循環(huán)條件為真省略邏輯量,那么循環(huán)條件為真,那么在循環(huán)體中應有循環(huán)終了語句,那么在循環(huán)體中應有循環(huán)終了語句,否那么是死循環(huán)。,否

14、那么是死循環(huán)。5省略表達式省略表達式1和表達式和表達式2,for語語句相當于句相當于while語句。語句。例例77.1414mamain() () /*計算計算xn */ float float x,xexp pn; int t n,i; sca scanf(f(%f%f,% %d,& &x,& &n) ); xexp pn=11; i=11; for( for(;i =n;) ) /*等同于等同于whwhil le( (i n) )*/ xexp pn*=x; i+; pr printf(tf(%f%fn,xexp pn) );6循環(huán)體可以是空語句。循環(huán)體可以

15、是空語句。例例7.15#include stdio.hmain() int count; count=0; printf(input a string:n); for(;getchar()!=n;count+); printf(%dn,count); 無論無論for語句如何省略括號內(nèi)的內(nèi)容,循環(huán)的三個要語句如何省略括號內(nèi)的內(nèi)容,循環(huán)的三個要素是必需求表達的,所以在運用素是必需求表達的,所以在運用for語句時,要充分了解語句時,要充分了解for語句的執(zhí)行過程。語句的執(zhí)行過程。7.3 break7.3 break和和continuecontinue語句語句77.33.1 br1 breaak語句語

16、句 brbreaak語句也可以在循環(huán)體中運用,作語句也可以在循環(huán)體中運用,作用是終了循環(huán),繼續(xù)執(zhí)行循環(huán)的后續(xù)語句。用是終了循環(huán),繼續(xù)執(zhí)行循環(huán)的后續(xù)語句。brbreaak語句的普通方式為:語句的普通方式為:brbreaak; 運用運用brbreaak語句可以使循環(huán)語句有多個語句可以使循環(huán)語句有多個出口,在一些場所下使編程更加靈敏、方便。出口,在一些場所下使編程更加靈敏、方便。例例77.17 17 判別某個一位數(shù)能否在一個不高于判別某個一位數(shù)能否在一個不高于四位的整數(shù)中出現(xiàn)。四位的整數(shù)中出現(xiàn)。圖7.12 例7.17的N-S流程圖 flag=1(假定 n 沒有在 m 中出現(xiàn)) 輸入 m,n 當 m!

17、=0 時 n= Y m%10 N flag=0 break m=m/10 輸出 flag main() int m,n; int flag; flag=1; scanf(%d,%d,&m,&n); while(m!=0) if(n=m%10) flag=0; break; m=m/10; if(flag=0) printf(yesn); else printf(non);77.33.2 co2 cont tinu ue語句語句cocont tinu ue語句只能用在循環(huán)體中。語句只能用在循環(huán)體中。 其普通格式是:其普通格式是: cocont tinu ue; co cont t

18、inu ue語句的功能是終了本次循環(huán),即不再語句的功能是終了本次循環(huán),即不再執(zhí)行循環(huán)體中執(zhí)行循環(huán)體中cocont tinu ue 語句之后的語句,轉入下一語句之后的語句,轉入下一次循環(huán)執(zhí)行。應留意的是,該語句只終了本層本次次循環(huán)執(zhí)行。應留意的是,該語句只終了本層本次的循環(huán),并不跳出循環(huán)。的循環(huán),并不跳出循環(huán)。 運用運用cocont tinu ue語句時,應該清楚在不同的循環(huán)語句時,應該清楚在不同的循環(huán)語句中下次循環(huán)的起點是什么。在語句中下次循環(huán)的起點是什么。在whwhil le和和do o-whwhil le語句中,下次循環(huán)的起點是判別邏輯量;在語句中,下次循環(huán)的起點是判別邏輯量;在forfo

19、r語語句中,下次循環(huán)的起點是計算表達式句中,下次循環(huán)的起點是計算表達式22的值。的值。例例77.18 18 輸出輸出1111000之間能被之間能被33、5、77同時整除同時整除的數(shù)。的數(shù)。mamain()() int t n; for( for(n=11;n =11000;n+) ) if (f (n%3%3!=0) ) co cont tinu ue; if (f (n% %5!=0) ) co cont tinu ue; if (f (n%7%7!=0) ) c cnt tinu ue; pr printf(tf(%8%8d,n) ); pr printf(tf(n) );7.4 7.4 循環(huán)的嵌套循環(huán)的嵌套 當一個循環(huán)體內(nèi)又包含另一個循環(huán)構當一個循環(huán)體內(nèi)又包含另一個循環(huán)構造時,稱為循環(huán)的嵌套。被嵌入的循環(huán)又造時,稱為循環(huán)的嵌套。被嵌入的循環(huán)又可以嵌套其他的循環(huán),這就是多重循環(huán)。可以嵌套其他的循環(huán),這就是多重循環(huán)。 例例77.119 分析以下循環(huán)內(nèi)外層循環(huán)控制變量的變化。分析以下循環(huán)內(nèi)外層循環(huán)控制變量的變化。mamain()() int t i,j; int m

溫馨提示

  • 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

提交評論