版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11講break語(yǔ)句和continue語(yǔ)句循環(huán)結(jié)構(gòu)程序舉例。循環(huán)結(jié)構(gòu)第1頁(yè)循環(huán)結(jié)構(gòu)第2頁(yè)5.6break語(yǔ)句和continue語(yǔ)句為了使循環(huán)控制愈加靈活,C語(yǔ)言還提供了break語(yǔ)句和continue語(yǔ)句。
break語(yǔ)句在循環(huán)控制中作用是強(qiáng)行結(jié)束該語(yǔ)句所在整個(gè)循環(huán)結(jié)構(gòu),轉(zhuǎn)向執(zhí)行循環(huán)體語(yǔ)句后下一條語(yǔ)句。
continue語(yǔ)句作用是提前結(jié)束屢次循環(huán)中某一次循環(huán),即跳過(guò)循環(huán)體語(yǔ)句中位于continue語(yǔ)句之后其余語(yǔ)句,從而進(jìn)入下一次循環(huán)。循環(huán)結(jié)構(gòu)第3頁(yè)1.break語(yǔ)句在第四章中已經(jīng)介紹過(guò),用break語(yǔ)句能夠使流程跳出由switch語(yǔ)句組成多分支結(jié)構(gòu)。當(dāng)break語(yǔ)句用在do-while、for或while循環(huán)語(yǔ)句中時(shí),也能夠使程序終止循環(huán),跳出循環(huán)結(jié)構(gòu)。通常break語(yǔ)句總是與if語(yǔ)句配合使用,即當(dāng)滿足某個(gè)給定條件要求時(shí)便跳出循環(huán)。循環(huán)結(jié)構(gòu)第4頁(yè)例5.6在循環(huán)體中使用break語(yǔ)句。main(){inti,s;s=0;for(i=1;i<=10;i++)
{s=s+i;if(s>5)
break;printf("s=%d\n",s);
}}程序輸出結(jié)果以下:s=1s=3
注意
只能在do-while、for、while循環(huán)語(yǔ)句或switch語(yǔ)句體內(nèi)使用break語(yǔ)句,其作用是使程序提前終止它所在語(yǔ)句結(jié)構(gòu),轉(zhuǎn)去執(zhí)行下一條語(yǔ)句;若程序中有上述四種結(jié)構(gòu)語(yǔ)句嵌套使用,則break語(yǔ)句只能終止它所在最內(nèi)層語(yǔ)句結(jié)構(gòu)。循環(huán)結(jié)構(gòu)第5頁(yè)2.continue語(yǔ)句例5.7在循環(huán)體中使用continue語(yǔ)句。main(){inti,s=0;for(i=1;i<=8;i++){s=s+i;printf("\ni=%d",i);if(i%2==0)
continue;printf("s=%d\n",s);
}}continue語(yǔ)句只能在do-while、for和while循環(huán)語(yǔ)句中使用,其作用是提前結(jié)束屢次循環(huán)中某一次循環(huán)。運(yùn)行結(jié)果:i=1s=1i=2i=3s=6i=4i=5s=15i=6i=7s=28i=8
在執(zhí)行8次循環(huán)中,當(dāng)i值為偶數(shù)時(shí),執(zhí)行continue語(yǔ)句,其作用是跳過(guò)printf(“s=%d\n”,s);語(yǔ)句,繼續(xù)執(zhí)行下一次循環(huán)。循環(huán)結(jié)構(gòu)第6頁(yè)5.7選擇結(jié)構(gòu)程序舉例
許多實(shí)際應(yīng)用程序都要用到循環(huán)處理,在學(xué)習(xí)了本章基本內(nèi)容之后,我們?cè)谶@里著重介紹兩個(gè)最基本、最慣用循環(huán)處理算法----窮舉法和遞推法。1.窮舉法
“窮舉法”也稱為“枚舉法”或“試湊法”,即采取循環(huán)結(jié)構(gòu)將全部可能出現(xiàn)情況一一進(jìn)行測(cè)試,判斷是否滿足給定條件。循環(huán)結(jié)構(gòu)第7頁(yè)例5.8求n!。即計(jì)算1×2×3×…×n值。程序以下:main(){inti,n;longs=1;printf("Entern:");scanf("%d",&n);for(i=1;i<=n;i++)
s=s*i;printf("%d!=%ld\n",n,s);}運(yùn)行結(jié)果以下:Entern:6<CR>6!=720分析:把每一個(gè)參加乘積數(shù)用循環(huán)變量一一列舉出來(lái),并相乘。循環(huán)結(jié)構(gòu)第8頁(yè)
題目:從鍵盤輸入全班學(xué)習(xí)成績(jī),統(tǒng)計(jì)出最高分、最低分和平均分。
分析:因?yàn)椴恢缹W(xué)生人數(shù),程序中用一個(gè)負(fù)數(shù)來(lái)作為結(jié)束輸入成績(jī)標(biāo)志。例5.9極值問題main(){intx,max,min,n;
float
sum=0;printf("Enterx(-1toend):");scanf("%d",&x);
max=x;min=x;n=0;while(x>=0){sum=sum+x;n=n+1;if(x>max)max=x;if(x<min)min=x;scanf("%d",&x);
}if(max>0)printf("max=%d,min=%d,aver=%f\n",max,min,sum/n);}運(yùn)行結(jié)果以下:Enterx(-1toend):8776539958-1<CR>max=99,min=53,aver=74.599998循環(huán)結(jié)構(gòu)第9頁(yè)例5.10素?cái)?shù)問題程序以下:main(){intm,i,flag;printf("Enterainteger:");scanf("%d",&m);
flag=1;/*先假定m是素?cái)?shù)*/for(i=2;i<=m-1;i++)if(m%i==0){flag=0;break;}printf("%d:",m);if(flag)printf("YES!\n");elseprintf("NO!\n");}
素?cái)?shù)是一個(gè)大于2,且只能被1和它自己整除整數(shù)。試編程求輸入某個(gè)正整數(shù)是否為素?cái)?shù)。若是,輸出YES,若不是,輸出NO。
分析:判別某數(shù)m是否為素?cái)?shù)最簡(jiǎn)單方法是:窮舉出全部可能除數(shù)2、3、4、…一直到m-1,分別判定m能否被它們整除,只要有一個(gè)能整除,m就不是素?cái)?shù);只有全部都不能整除時(shí),m才是素?cái)?shù)。運(yùn)行結(jié)果以下:Enterainteger:157<CR>157:YES!實(shí)際上只要試除到m/2或sqrt(m)就足夠了。循環(huán)結(jié)構(gòu)第10頁(yè)例5.11百錢買百雞問題“雞翁一,值錢三;雞母一,值錢五;雞雛三,值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?”。
分析:設(shè)雞翁x只、雞母y只、雞雛z只。解題思緒是:雞翁數(shù)x值可能是[0,33]中任何一個(gè)值;雞母數(shù)y值可能是[0,20]中任何一個(gè)值;將全部可能出現(xiàn)情況都一一進(jìn)行測(cè)試,若滿足要求就把這種情況輸出,作為可能一個(gè)解。main(){intx,y,z;
for(x=0;x<=33;x++)
for(y=0;y<=20;y++)
{z=100-x-y;
if(x*3.0+y*5.0+z/3.0==100.0)
printf("x=%d,y=%d,z=%d\n",x,y,z);}}該程序能從七百各種可能組合情況中挑選出四種滿足要求答案。運(yùn)行結(jié)果以下:x=4,y=12,z=84x=11,y=8,z=81x=18,y=4,z=78x=25,y=0,z=75循環(huán)結(jié)構(gòu)第11頁(yè)例5.12長(zhǎng)材料截取短料最優(yōu)化方法
題目:有一根長(zhǎng)度為323米鋼材料,要將它截取成兩種規(guī)格a、b長(zhǎng)度分別為17米和27米短料,每種最少1段,問分隔成a,b各多少段后,剩下殘料r最少?分析:規(guī)格a鋼材料個(gè)數(shù)na可能為:1、2、3、……(321-27)/17。main(){intna,nb,a,b,r,rmin;na=1;nb=1;rmin=323-17-27;for(na=1;na<=(323-27)/17;na++){nb=(323-na*17)/27;r=323-na*17-nb*27;if(r<rmin){rmin=r;a=na;b=nb;}}printf("a=%d,b=%d,min=%d\n",a,b,rmin);}運(yùn)行結(jié)果以下:a=11,b=5,min=1循環(huán)結(jié)構(gòu)第12頁(yè)2.遞推法“遞推法”又稱為“迭代法”,其基本思想是把一個(gè)復(fù)雜計(jì)算過(guò)程轉(zhuǎn)化為簡(jiǎn)單過(guò)程屢次重復(fù)。例5.13猴子吃桃問題:小猴在某天摘桃若干個(gè),當(dāng)日吃掉二分之一,以為還不過(guò)癮,又多吃了一個(gè)。第二天吃了剩下桃子二分之一又多一個(gè);以后天天都這么吃下去,直到第8天要吃時(shí)只剩下一個(gè)桃子了,問小猴子第一天共摘下了多少個(gè)桃子?
分析:這是一個(gè)“遞推”問題,先從最終一天桃子數(shù)推出倒數(shù)第二天桃子數(shù),再?gòu)牡箶?shù)第二天桃子數(shù)推出倒數(shù)第三天桃子數(shù)……。設(shè)第n天桃子為xn,那么它是前一天桃子數(shù)xn-1二分之一減1,遞推公式為:xn=xn-1/2–1。即:xn-1=(xn+1)×2。循環(huán)結(jié)構(gòu)第13頁(yè)例5.13猴子吃桃問題程序main(){inttao,n;tao=1;/*已知第8天桃子數(shù)*/for(n=7;n>=1;n=n-1)
tao=(tao+1)*2;printf("tao(1)=%d\n",tao);}程序執(zhí)行后輸出結(jié)果以下:tao(1)=382循環(huán)結(jié)構(gòu)第14頁(yè)例5.15求pi近似值
分析:本題遞推公式比上面兩個(gè)例子復(fù)雜,只能將分子和分母分別遞推出新值后再做除法運(yùn)算。其遞推方法和求解步驟以下:1.分母n初值為1,遞推公式:n=n+2;2.分子s初值為1.0,遞推公式:s=(-1)*s;3.公式中某項(xiàng)值為:t=s/n。從以上求pi公式來(lái)看,不能決定n最終值應(yīng)該是多少;但能夠用最終一項(xiàng)t=s/n絕對(duì)值小于0.0001來(lái)作為循環(huán)結(jié)束條件。題目:用公式pi/4=1-1/3+1/5-1/7…求pi近似值,直到最終一項(xiàng)絕對(duì)值小于10-4為止。循環(huán)結(jié)構(gòu)第15頁(yè)#include"math.h"
main(){intn;floatt,s,pi;pi=0;/*變量pi用來(lái)存放累加和*/n=1;/*第一項(xiàng)分母值為1*/s=1.0;/*第一項(xiàng)分子值為+1*/t=s/n;/*先求出第一項(xiàng)值*/while(fabs(t)>=0.0001)
{pi=pi+t;
n+=2;s=-1*s;t=s/n;/*遞推出下一項(xiàng)值*/
}
printf("pi=%f\n",pi*4);}程序執(zhí)行后輸出以下結(jié)果。pi=3.141397pi/4=1-1/3+1/5-1/7+1/9……循環(huán)結(jié)構(gòu)第16頁(yè)
分析:求最大條約數(shù)迭代步驟以下:(1)輸入兩個(gè)正整數(shù)m,n;(2)用m除以n得到一個(gè)余數(shù)r;(3)若r=0,則n為最大條約數(shù),程序結(jié)束;不然用n取代m,用r取代n,轉(zhuǎn)去執(zhí)行第(2)步。例5.16求兩個(gè)正整數(shù)最大條約數(shù)程序以下:main(){intm,n,r;printf("Enterm,n:");scanf("%d,%d",&m,&n);
r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf("gcd=%d\n",n);}程序執(zhí)行后輸出結(jié)果以下:Enterm,n:14,8<CR>gcd=2循環(huán)結(jié)構(gòu)第17頁(yè)分析:兩個(gè)數(shù)最大條約數(shù)必定不會(huì)比其中小者大。用窮舉法求最大條約數(shù)main(){intm,n,r;printf("Enterm,n:");scanf("%d,%d",&m,&n);
r=m<n?m:n;
/*取m,n中小者*/while(r>1){if(m%r==0&&n%r==0)
break;
/*找到r即為最大條約數(shù),中止循環(huán)。*/
r=r-1;/*從大到小窮舉出全部可能數(shù)*/}printf("gcd(%d,%d)=%d\n",m,n,r);}循環(huán)結(jié)構(gòu)第18頁(yè)例5.17高次方程求根。本例介紹其中較簡(jiǎn)單二分法,其遞推方法以下:(1)輸入兩個(gè)點(diǎn)x坐標(biāo)值a,b,使f(a)*f(b)<0,即確保在區(qū)間[a,b]內(nèi)有一根。(2)求區(qū)間[a,b]中點(diǎn)c=(a+b)/2。(3)計(jì)算f(c)值,若該值小于給定精度要求,則c為求得近似根,程序結(jié)束;不然執(zhí)行步驟(4)。(4)若f(a)與f(c)同號(hào),則[a,c]無(wú)根,用c代替a;不然[c,b]無(wú)根,用c代替b;使求根區(qū)間縮小二分之一,并
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年學(xué)期計(jì)劃大學(xué)學(xué)期計(jì)劃大二下學(xué)期
- 輕醫(yī)美抗衰知識(shí)培訓(xùn)課件
- 2025年學(xué)生會(huì)工作計(jì)劃范文怎么寫
- 2025年甜品店創(chuàng)業(yè)計(jì)劃書
- 安全生產(chǎn)責(zé)任制的思考
- 2025年銷售個(gè)人月度工作總結(jié)與計(jì)劃范文
- 2025年度弘文青少年體育俱樂部工作計(jì)劃
- 心內(nèi)科護(hù)士的工作總結(jié)
- 安保行業(yè)安全生產(chǎn)工作總結(jié)
- 2025年社區(qū)愛國(guó)衛(wèi)生工作計(jì)劃報(bào)告
- 《中西醫(yī)的區(qū)別》課件
- RFID電子標(biāo)簽制作方法
- 智能制造企業(yè)數(shù)字化轉(zhuǎn)型建設(shè)方案
- 病理生理學(xué)課件脂代謝紊亂
- 教師幽默朗誦節(jié)目《我愛上班》
- 《細(xì)胞工程學(xué)》考試復(fù)習(xí)題庫(kù)(帶答案)
- 中學(xué)課堂教學(xué)評(píng)價(jià)量表
- 食堂食材配送以及售后服務(wù)方案
- 稱量與天平培訓(xùn)試題及答案
- 塊單項(xiàng)活動(dòng)教學(xué)材料教案丹霞地貌
- 青年人應(yīng)該如何樹立正確的人生觀
評(píng)論
0/150
提交評(píng)論