![第六章(循環(huán)控制)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/11/4dff4ef3-daab-416e-94f9-7743073baef0/4dff4ef3-daab-416e-94f9-7743073baef01.gif)
![第六章(循環(huán)控制)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/11/4dff4ef3-daab-416e-94f9-7743073baef0/4dff4ef3-daab-416e-94f9-7743073baef02.gif)
![第六章(循環(huán)控制)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/11/4dff4ef3-daab-416e-94f9-7743073baef0/4dff4ef3-daab-416e-94f9-7743073baef03.gif)
![第六章(循環(huán)控制)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/11/4dff4ef3-daab-416e-94f9-7743073baef0/4dff4ef3-daab-416e-94f9-7743073baef04.gif)
![第六章(循環(huán)控制)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/11/4dff4ef3-daab-416e-94f9-7743073baef0/4dff4ef3-daab-416e-94f9-7743073baef05.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1,第6章 循環(huán)控制,浙江理工大學 計算機技術教研部 2007年4月,2,學習內(nèi)容,6.1 概述 6.2 goto語句及用goto語句構(gòu)成循環(huán) 6.3 while語句 6.4 dowhile語句 6.5 for語句 6.6 循環(huán)的嵌套 6.7 幾種循環(huán)的比較 6.8 break語句 , continue語句 6.9 程序舉例,3,6.1 概述,循環(huán)控制的應用范圍非常廣泛,并且循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序三種基本結(jié)構(gòu)之一,熟練掌握循環(huán)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的概念是程序設計的基本要求。,4,6.2 goto語句及其循環(huán),一般形式:goto 語句標號 語句標號用標識符表示,由字母、數(shù)字、下劃線組成,第一個字符必須為
2、字母或下劃線,不能用整數(shù)作標號. Eg: goto 123 () 應用舉例:,5,goto語句應用舉例,Int main ( ) int i , sum=0; i=1; loop: if (i=100) sum=sum+i ; i+ ; goto loop ; printf (“%d”,sum) ; ,冒號是標號的標志,6,6.3 while 語句,while (表達式) 語句 特點:先判斷,后執(zhí)行. 反復執(zhí)行,直到表達式為假時結(jié)束.,而if 語句是執(zhí)行一次,接著往后執(zhí)行.,7,While循環(huán)舉例,void main() int i, sum=0; i=1; while (i=100) sum
3、=sum+i; i+; printf (“%dn”,sum); ,循環(huán)體,NS圖,8,循環(huán)體的構(gòu)成,編寫循環(huán)體時,應注意: (1)循環(huán)體若包含一個以上的語句,應用花括弧括起來,以復合語句形式出現(xiàn) (2)應有使循環(huán)結(jié)束的語句,如上例中的“i+”。,9,6.4 dowhile 語句,do-while流程圖:,形式: Do 循環(huán)體語句 While(表達式),10,先執(zhí)行語句,后判斷表達式(先斬后奏) 當表達式的值為非零時,循環(huán)執(zhí)行;當表達式的值為零時,結(jié)束循環(huán)。 注意:循環(huán)體內(nèi)要有使循環(huán)結(jié)束的語句. 比較: while 語句 與 dowhile語句 一般情況二者相同,但在while后面的表達式 一開
4、始就為假(0值)時,兩種循環(huán)結(jié)果不同。,dowhile的執(zhí)行特點,11,void main( ) int sum=0,i ; scanf(“%d”, ,當i值小于或等于10時,二者結(jié)果相同, 而當i10時,二者結(jié)果不同。 因為此時對while循環(huán),不執(zhí)行循環(huán), 而對dowhile循環(huán),要執(zhí)行一次循環(huán)體。,void main( ) int sum=0,i ; scanf(“%d”, ,while,Do-while,While與dowhile的區(qū)別,注意這個分號,嚴進寬出,寬進嚴出,12,例:打印15,void main() int i = 1; do printf(“%d ”, i); i+;
5、while(i = 5); ,打印的不同要求: (1)改寫成while循環(huán) (2)5個數(shù)緊挨著打在同一行 (3)打在同一行,但每個數(shù)之間有一定的空隙,如有2個空格 (4)打在同一列 (5)5個數(shù)字全部輸出后換行 (6)交換循環(huán)體中兩個語句的位置,怎樣為i賦初值?,13,閱讀程序,寫出執(zhí)行結(jié)果,#include void main() int i = 10; do printf(%d, i); i+; while(i = 5); printf(%d,i); ,14,程序舉例(1):P129習題6 .4,求1!+2!+3!+20!,15,程序(2)舉例,計算1/(1*2)+1/(2*3)+1/(n
6、*(n+1),其中n=20 1/(1*2)-1/(2*3)+1/(3*4)-1/(4*5)+1/(n*(n+1),其中n=20,16,程序(3)舉例,計算e=1+1/1!+1/2!+1/3!+1/4!+1/n!+ 直到某一項的值小于0.000001,17,程序舉例(4):P129習題6.6,水仙花數(shù):指一個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如153就是水仙花數(shù)。,18,程序舉例(8):P130習題6.14,* * * * * * *,打印如下圖案:,19,程序(6)舉例,已知x,y,z分別是09中的一個數(shù),求x,y,z的值,使得下式成立:xxz+yzz=532。(其中xxz和yzz不表
7、示乘積,而是由z,y,z組成的三位數(shù))。,20,程序(5)舉例,有一階梯,如果每步跨2階,最后余一階;每步跨3階,最后余2階;每步跨4階,最后余3階;每步跨5階,最后余4階;每步跨6階,最后余5階;每步跨7階,正好到達階梯頂。問階梯至少有多少階?,21,程序(7)舉例,百錢買百雞。公元前5世紀,我國數(shù)學家張丘建在算經(jīng)中提出“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞。問雞翁、雞母、雞雛各幾何?,22,程序舉例(9):P129習題6.2,輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。,23,程序舉例,數(shù)列第1項為81,此后各項均為它前1項的正平方根,統(tǒng)計
8、該數(shù)列前30項之和,24,6.5 for 語句,一般形式: for(表達式1;表達式2;表達式3) 語句 執(zhí)行過程:,相當于: 表達式1; While(表達式2) 語句 表達式3; ,25,void main( ) int i,sum; sum=0; for (i=1;i=100;i+) sum=sum+i; printf (sum=%dn,sum); ,void main( ) int i=1,sum; sum=0; while(i=100) sum=sum+i; i+; printf (sum=%dn,sum); ,兩種寫法的比較,26,例:用for求,i=1;,i=100,sum=sum
9、+i;,輸出sum,真,假,表達式1,表達式2,表達式3,語句,i=i+1;,27,例:用for求,# include void main() int i, sum=0; for(i=1;i=100;i+) sum=sum+i; printf (%dn,sum); ,可以沒有表達式3,設法使循環(huán)結(jié)束: for(i=1;i100;) sum=sum+i; i+; ,可以沒有表達式1和表達式3: i=1; for(;i=100;) sum=sum+i; i+; ,如果沒有表達式2,循環(huán)將無限進行下去: for(i=1; ;i+) sum=sum+i;,可以沒有表達式1: i=1; for(;i=1
10、00;i+) sum=sum+i;,28,For循環(huán)的變種,(1) 表達式1省略而分號不能省略.,例子,例子,例子,例子,(5)表達式1既可以設置循環(huán)變量初值的賦值表達式,又可以是同循環(huán)變量無關的其他表達式。表達式3也可以是與循環(huán)控制無關的任意表達式。另外,表達式1和3可以是簡單表達式,也可以是逗號表達式,如: For(i=0,j=100;i=j;i+,j-) k=i+j,(4) 同while語句等同的情況.,(2) 表達式2省略,即不判斷循環(huán)條件.,(3) 表達式3省略的情況.,例子,29,For循環(huán)的變種,實驗6_2,(6)表達式2一般是關系表達式或邏輯表達式;也可以是字符表達式或數(shù)值表達
11、式。 只要其值為非0,就執(zhí)行循環(huán)體,(7)表達式1,2,3全部省略,即for(;)相當于while(1),注:從上面的敘述可以看到,for循環(huán)的功能非常強,完全可以取代while循環(huán)。與循環(huán)控制無關的操作可以出現(xiàn)在表達式1和表達式3中 。但不宜過分利用這個特點,因為這樣會使for語句顯得雜亂,可讀性不強。,舉例,30,6.6 循環(huán)的嵌套,循環(huán)的嵌套:一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu);內(nèi)嵌的循環(huán)中還可以再嵌套循環(huán),構(gòu)成多重循環(huán)。 三種循環(huán)(while循環(huán)、dowhile循環(huán)、for循環(huán))可以互相嵌套,1. While() while() ,4. While() do while() ,3.
12、 for(;) for(;) ,2. do do . while() While(),31,6.7 幾種循環(huán)的比較,(1)四種循環(huán)可以相互替代,用來處理同一問題。但一般不提倡使用goto語句。 (2) 在while循環(huán)和dowhile循環(huán)中,whlie緊跟的括號內(nèi)指定循環(huán)條件。為了使循環(huán)能正常結(jié)束,應在循環(huán)體中包含使循環(huán)趨向結(jié)束的語句。for循環(huán)可以在表達式3中包含使循環(huán)趨向結(jié)束的語句。 (3)使用while循環(huán)和dowhile循環(huán)時,變量的初始化操作應在循環(huán)開始之前完成。 for循環(huán)可以在表達式1中實現(xiàn)變量的初始化操作。 (4)break語句和continue語句不能用于goto語句和 if
13、 語句.,32,6.8 break ,continue語句,break語句: 用于退出循環(huán)。 注意: break語句只能用于循環(huán)語句和switch語句。 Continue語句用于結(jié)束本次循環(huán)。,33,for (r=1;r100) break ; printf (“%f ”,area); ,While(表達式1) 語句 If(表達式2) break; 語句 ,break,break語句: 用于退出循環(huán)。,34,break語句,只能結(jié)束break語句所在的循環(huán) 要全部結(jié)束多層循環(huán),可以設置一個標志變量逐層結(jié)束。 ;flag=0; while() while() if() flag=1; break
14、; /在結(jié)束本層循環(huán)之前設置標志 if(flag=1) break; ,/跳出外層循環(huán)。標志flag起了接力棒的作用,35,作用: 結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下次是否執(zhí)行循環(huán)的判定.,While(表達式1) 語句 If(表達式2)continue; 語句 ,Continue語句,表達式1,表達式2,While循環(huán)的下一語句,y,no,y,no,36,void main( ) int n; for (n=100;n=200;n+) if (n%3= =0) continue; printf( “%d”,n); ,將100200的不能被3整除的數(shù)輸出,37,conti
15、nue語句應用,將11000中不能被7整除的數(shù)進行求和,# include void main() int i,sum=0; for(i=1;i=1000;i+) if (i%7= =0) continue; sum+=i; printf(sum=%dn,sum); ,/能被7整除,本次循環(huán)不執(zhí)行,繼續(xù)下一次循環(huán),例,38,打印九九乘法表,一共要打9行,循環(huán)控制:for(i=1;i=9;i+) 每行要打i個表達式,循環(huán)控制:for(j=1;j=i;j+) 打?。簆rintf(%d*%d=%d ,j,i,i*j); 進行下一行時要換行:printf(n);,39,打印金字塔,解題要點: 1.金字
16、塔層數(shù):n 循環(huán)控制: for(i=1;i=n;i+) 2.每層前的空格數(shù):k 循環(huán)控制: for(k=1;k=?;k+) 3.每層個數(shù):j 循環(huán)控制: for(j=1;j=?;j+),40,判斷一個數(shù)是否是素數(shù),break;,n能被整除的最大數(shù)是,i 循環(huán)正常結(jié)束,用break是提前結(jié)束循環(huán)。由此得到是否素數(shù)的結(jié)論。也可以利用標記變量的方法得出結(jié)論。,41,例6.8求素數(shù),#include #include void main() int m,i,k,sum=0; for(m=101;m=k+1) printf (%dn,m); /怎樣實現(xiàn)每10個素數(shù)打印一行? sum=sum+m; pri
17、ntf(100200之間的素數(shù)和為%dn,sum); ,42,課堂練習5 編程,一個猜數(shù)游戲:計算機自動產(chǎn)生一個隨機整數(shù)(兩位數(shù));從鍵盤輸入整數(shù)猜這個數(shù);若輸入的數(shù)太小,則計算機給出“太小了!”的提示,若輸入的整數(shù)太大,則給出“太大了”的提示,并允許繼續(xù)猜;若猜中,則給出“猜對了”的提示,結(jié)束程序。,關于隨機整數(shù)的產(chǎn)生p372:函數(shù)rand() 隨機函數(shù)種子:srand(time(NULL),43,Fibonacci數(shù)列, 例6.7 求Fibonacci數(shù)列:1,1,2,3,5,8,13的前20個數(shù),即: F1=1 (n=1) F2=1 (n=2) F(n)=F(n-1)+F(n-2) (n=3),44,void main( ) long int f1,f2; int i; f1=1; f2=1; for
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高級職稱申請書
- 2025年塑膠磁卡項目可行性研究報告
- 礦砂項目立項申請報告-圖文
- 預支工資申請書范文
- 摩托車空轉(zhuǎn)鎖項目可行性研究報告方案可用于立項及銀行貸款+201
- 電能質(zhì)量監(jiān)測在電力設施保護中的應用
- 知識產(chǎn)權管理系統(tǒng)的多語言支持功能探索
- 2025年全球DNA測序行業(yè)商業(yè)模式與投資預測分析報告
- 鋼鐵熔煉分析報告
- 2025年旅行箱拉桿項目可行性研究報告
- 分層作業(yè),分出活力小學數(shù)學作業(yè)分層設計的有效策略
- 2023湖南省修訂醫(yī)療服務價格項目匯總表
- 驗證機械能守恒物理實驗報告
- (完整)雙溪課程評量表
- 成人機械通氣患者俯臥位護理2023護理團體標準7
- 體育心理學(第三版)PPT全套教學課件
- 【鋼鐵冶煉】-銻冶煉先關工藝
- 拉線的制作詳細
- 護理管理組織體系架構(gòu)圖
- 漸變方格模板
- 潛水作業(yè)指導書
評論
0/150
提交評論