4(循環(huán)結(jié)構(gòu)).ppt_第1頁
4(循環(huán)結(jié)構(gòu)).ppt_第2頁
4(循環(huán)結(jié)構(gòu)).ppt_第3頁
4(循環(huán)結(jié)構(gòu)).ppt_第4頁
4(循環(huán)結(jié)構(gòu)).ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第四章:循環(huán)結(jié)構(gòu)的編程。序列結(jié)構(gòu)選擇(分支)結(jié)構(gòu)循環(huán)結(jié)構(gòu)在有限的時(shí)間內(nèi)做一件或一系列有規(guī)律的重復(fù)事情。# include # include void main()float a,b,c,s,areaPrintf(請(qǐng)輸入三角形的三條邊a、b、c :);以Scanf(%f,%f,%f,4.1)為例,實(shí)現(xiàn)了三角形面積問題的交互式重復(fù)運(yùn)行。而(a!=0|b!=0|c!=0),scanf(%f,%f,%f,4.1示例,示例4-2,打印60 *,一行,程序代碼:包括void main()int I;I=1;而(i=60) /*重復(fù)輸出*60個(gè)周期*/printf(“*”);I ./*在前面的示例中充當(dāng)s

2、canf,因此循環(huán)可以結(jié)束*/printf(“n”);循環(huán)結(jié)構(gòu)的構(gòu)成:循環(huán)條件和循環(huán)體,在有限的時(shí)間內(nèi)做一件或一系列有規(guī)律的重復(fù)性的事情。c語言提供了三種循環(huán)語句:while、do-while和for,例如,4-2計(jì)算1 23.100.(使用時(shí))P47,讓:n為順序項(xiàng)目變量和循環(huán)控制變量,snm為累計(jì)和變量。#包括void main() int n,sumn=1;/給循環(huán)計(jì)數(shù)變量分配一個(gè)初始值。sum=0;而(n100),循環(huán)結(jié)束。總和=總和n;n;/n是結(jié)束循環(huán)的語句。printf(sum=%d n ,sum);和=385,練習(xí)4-1:求100以內(nèi)奇數(shù)的倒數(shù)和;練習(xí)4-2:計(jì)算12 22 1

3、02。1)在1)while語句的循環(huán)體中必須有一條語句來結(jié)束循環(huán),否則,一旦進(jìn)入循環(huán),循環(huán)將永遠(yuǎn)不會(huì)結(jié)束,并將出現(xiàn)一個(gè)“無限循環(huán)”。編程時(shí)避免這些情況。2)而(1),條件總是真的“無限循環(huán)”。3)while語句的范圍。如果循環(huán)體包含多個(gè)語句,則應(yīng)該用花括號(hào)括起來;否則,while循環(huán)體的范圍僅到達(dá)while之后的第一個(gè)分號(hào)。4);注意:P46,程序是否循環(huán)取決于循環(huán)條件來判斷表達(dá)式值是真還是假,真循環(huán),假循環(huán)。必須建立的概念:while(a1);a .用窮舉法求解# include void main () int I=300,sum=0;/*當(dāng)(i=800)/*循環(huán)條件時(shí),讓循環(huán)控制變量的初

4、始值為300 */;小于800*/如果(i% 7=0) /*求7的倍數(shù)并過濾*/sum=sum I;/*循環(huán)體:累加和求和*/I=I 1;/*修改循環(huán)變量*/printf(“sum=% dn”,sum);例4-3,求7和P48在300800之間的倍數(shù),例4-6,依次輸入一批正數(shù),求正數(shù)的和,當(dāng)輸入負(fù)數(shù)或0時(shí)結(jié)束(do-while) p49,#包括void main () float x,sum;總和=0.0;scanf( % f /*輸出結(jié)果*/,1。在do-while循環(huán)語句中,不要忘記在while(e)之后寫分號(hào)。2.在do-while循環(huán)語句中,無論循環(huán)體是否是單個(gè)語句,通常都將其括在花

5、括號(hào)中,并直接在“”之后寫入while(e),以避免將while(e)部分誤認(rèn)為新while循環(huán)的開始。注:# include # include void main()float n,s,t,pi;t=1;pi=1;n=1.0s=1;do n=N2;s=-s;/*找到符號(hào)位s,符號(hào)變化*/t=s * 1/n;/*求一系列項(xiàng)目的值t */pi=pi t;/*累積t */同時(shí)(fabs(t)=1e-6);/* fabs(t)絕對(duì)值函數(shù)*/pi=pi * 4;printf(“pi=% fn”,pi);示例4-7:使用以下公式獲取近似值,直到最后一項(xiàng)的絕對(duì)值小于10-6。P49、for語句是一種比w

6、hile語句更強(qiáng)大、更靈活的循環(huán)結(jié)構(gòu)。4.4。對(duì)于loop語句、e1:將初始值分配給loop變量e2:判斷l(xiāng)oop條件e3:更改loop變量的值、例如:4-2計(jì)算1 23.100.(用于)p51,包括void main () int n,sumsum=0;對(duì)于(n=1;在n100,循環(huán)結(jié)束??偤?總和n;n;/n是結(jié)束循環(huán)的語句。printf(sum=%d n ,sum);表達(dá)式1.e1、e2和e3都可以省略,但是分號(hào)“;”它不能被忽略。此時(shí),它完全等同于while (1),循環(huán)體在沒有終止的情況下執(zhí)行。用于(;(.s;2。只需省略表達(dá)式e2,即(E1;E3),省略循環(huán)判斷的條件,并執(zhí)行循環(huán)體

7、而不終止。3.如果只有表達(dá)式e2,即,對(duì)于(;E2;),它完全等同于while (e)語句。注意,規(guī)則是當(dāng)n=1或n=2時(shí),F(xiàn)(n)=1;在n2,F(xiàn)(n)=F(n-1) F(n-2),即:n=1,F(xiàn)(1)=1;n=2,F(xiàn)(2)=1;n=3,F(xiàn)(3)=F(2)F(1)=2;n=4,F(xiàn)(4)=F(3)F(2)=3;n2,F(xiàn)(n)=F(n-1) F(n-2).例子4-8斐波那契數(shù)列問題:寫一個(gè)程序并打印前20項(xiàng)(它是由意大利數(shù)學(xué)家斐波那契提出的)。P52,#包括“stdio . h”main()int n,f1=1,f2=1,F(xiàn)3;printf(dd,f1,f2);對(duì)于(n=3;n=20n)F3=f

8、1 F2;printf(d,f3);f1=f2f2=f3迭代問題:利用循環(huán)求解數(shù)學(xué)遞歸序列問題(由遞歸關(guān)系和初始條件決定的序列)的迭代過程。C語言中的三種循環(huán)語句可以相互嵌套,嵌入的循環(huán)可以是嵌套循環(huán),稱為多重循環(huán)。循環(huán)嵌套的原則:嵌套的循環(huán)必須是一個(gè)完整的循環(huán)結(jié)構(gòu),即兩個(gè)循環(huán)結(jié)構(gòu)不能相互交叉。4.5循環(huán)嵌套(多循環(huán)),循環(huán)嵌套執(zhí)行過程:示例:打印由(1,1) (9,9)組成的矩形區(qū)域中每個(gè)整數(shù)坐標(biāo)點(diǎn)對(duì)應(yīng)的坐標(biāo)。注意:嵌套循環(huán)的循環(huán)控制變量不能同名,并行循環(huán)的循環(huán)控制變量可以同名;#包括main() int i,j;對(duì)于(I=1;I=9;I)對(duì)于(j=1;j=9;j ) printf(%d、%

9、d)、I、j);printf(n);練習(xí):99乘法表(矩形和三角形陣列),示例4-11:百元買100只雞:只公雞1 5元,母雞13元,雞3 1元。(窮舉方法)P55,main()/*方法2 */int x,y,z;對(duì)于(x=0;x=20x)表示(y=0;y=33y)z=100-x-y;if(15 * x 9 * y z=300)printf(% d % d % dn,x,y,z);main()/*方法1 */int x,y,z;對(duì)于(x=0;x=100x)表示(y=0;y=100y)表示(z=0;z=100z)如果(x y z=100,校正:x y z=100 int n,m;對(duì)于(n=1;n

10、=20n)t=1;對(duì)于(m=1;m=n;m)t *=m;s=t。printf(1!2!3!n!=%en ,s);示例:使用for循環(huán)語句計(jì)算1!2!3!n!n環(huán)路控制變量;s是累積和變量;t是階乘變量。1!2!3!n!=2.56133e 018,主()浮動(dòng)t=1,s=0;int n;對(duì)于(n=1;n=20n)t *=n;s=t。printf(1!2!3!n!=%en ,s);示例4-9:計(jì)算1!2!3!n!P53,n周期控制變量;s是累積和變量;t是階乘變量。對(duì)于(s=0,t=1,n=1;n=20n)t *=n;s=t。C語言中的三種循環(huán)都是根據(jù)循環(huán)判斷表達(dá)式0來控制循環(huán)的結(jié)束,即正常結(jié)束。在

11、實(shí)際應(yīng)用中,有時(shí)需要在循環(huán)的中間退出循環(huán),這是一種非正式的循環(huán)退出,可以通過中斷和繼續(xù)語句來實(shí)現(xiàn)。4.6中斷和繼續(xù)語句,功能:退出當(dāng)前循環(huán)或當(dāng)前開關(guān)結(jié)構(gòu),不能用于其他語句。函數(shù):跳出當(dāng)前循環(huán)或切換語句,轉(zhuǎn)到它們之后的語句執(zhí)行。1) break語句,注意:如果break語句在多重循環(huán)中,那么break語句就跳出當(dāng)前的層循環(huán)。例4-12韓信命令士兵:韓信有一隊(duì)士兵。他想知道有多少人,所以他讓士兵們排隊(duì)報(bào)告人數(shù):從1到5,最后一個(gè)士兵報(bào)告1;根據(jù)從1到6的數(shù)字,最后一個(gè)士兵報(bào)告的數(shù)字是5;根據(jù)從1到7的數(shù)字,最后一個(gè)士兵報(bào)告的數(shù)字是4;最后,從1數(shù)到11,最后一個(gè)士兵數(shù)到10。下面程序的主要功能是計(jì)算韓信至少有多少士兵。P56,程序代碼: #包含v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論