




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.1 用格里高利程式求的近似值(while語(yǔ)句)第4章 循環(huán)結(jié)構(gòu)例4-1 用格里高利程式求的近似值,要求精確到末了一項(xiàng)的絕對(duì)值小于10-5.循環(huán)結(jié)構(gòu): 依照前提的推斷對(duì)某一段程序重復(fù)履行構(gòu)成循環(huán)的要素:循環(huán)體、前提推斷、進(jìn)入每次循環(huán)的籌辦循環(huán)語(yǔ)句:for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語(yǔ)句循環(huán)變量操縱循環(huán)次數(shù):循環(huán)變量、初值、終值、增量71513114pi=pi+item(通項(xiàng))item=flag*1.0(2*i-1)flag=1,i=1,2,?對(duì)比循環(huán)結(jié)束前提: |item|=10-5pi=pi+item非00i=1i=i+1pi=04.1.1 程序解析item=1flag=1ite
2、m=flag(2*i-1)flag=-flagpi=4*pi輸出pi停表達(dá)式1和表達(dá)式3不明白#include #include void main( ) int i,flag; double item,pi; pi=0;flag=1;i=1;item=1; for (;fabs(item)=1e-5;) pi=pi+item; i=i+1; flag=-flag; item=flag*1.0(2*i-1); pi=pi*4; printf(pi=%fn,pi);省略了表達(dá)式1和表達(dá)式2#include #include void main( ) int i,flag; double item
3、,pi; pi=0;flag=1;i=1;item=1; while(fabs(item)=1e-5) pi=pi+item; i=i+1; flag=-flag; item=flag*1.0(2*i-1); pi=pi*4; printf(pi=%fn,pi);for循環(huán)語(yǔ)句改用while循環(huán)語(yǔ)句34.1.2 while循環(huán)語(yǔ)句當(dāng)型循環(huán) 當(dāng)前提為真(非0)時(shí)做循環(huán),否退出循環(huán)標(biāo)準(zhǔn) while(表達(dá)式) 語(yǔ)句其中 語(yǔ)句是一個(gè)語(yǔ)句或復(fù)合語(yǔ)句 表達(dá)式是前提,求值得真(非0)或假(0) 操縱 當(dāng)表達(dá)式的值非0,履行語(yǔ)句后接著循 環(huán);當(dāng)表達(dá)式的值0,終止循環(huán).表達(dá)式語(yǔ)句非00 loop:if(表達(dá)式)
4、 語(yǔ)句; goto loop; 等價(jià)于 for(;表達(dá)式;) 語(yǔ)句; for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語(yǔ)句; 表達(dá)式1; while(表達(dá)式2)語(yǔ)句; 表達(dá)式3; 4例4-2 輸入一批學(xué)生的成績(jī),統(tǒng)計(jì)平均分循環(huán)體 sum=sum+mark mark學(xué)生成績(jī)循環(huán)推斷 一批 mark=0 那么mark為負(fù)值結(jié)束循環(huán)mark=0sum=sum+mark非00num=num+1num=0sum=0aver=sumnum輸出aver停輸入mark輸入mark#include void main( ) int num; double mark,sum,aver; num=0;sum=0; sc
5、anf(%lf,&mark); while(mark=0) sum=sum+mark; num=num+1; scanf(%lf,&mark); aver=sumnum; printf(aver=%fn,aver);54.2 統(tǒng)計(jì)一個(gè)整數(shù)的位數(shù)(dowhile語(yǔ)句)例4-3 從鍵盤(pán)讀入一個(gè)整數(shù),統(tǒng)計(jì)該數(shù)的位數(shù).例似,輸入1234,輸出4;輸入0,輸出1.一個(gè)整數(shù)由多位數(shù)字組成,統(tǒng)計(jì)環(huán)節(jié)需要一位位地?cái)?shù)操縱 num10-num,每統(tǒng)計(jì)一次削減一位數(shù)例 1234 整數(shù) 位數(shù) 1234 1123410-123 2 12310-12 3 1210-1 4 110-0 不計(jì)推斷前提 num
6、!=0例 0整數(shù) 位數(shù) 0 1 010-0 不計(jì)先統(tǒng)計(jì)后推斷前提 num!=0coun=coun+1非00num=num10coun=0輸出coun停輸入num64.2.1 程序解析#include void main( ) int coun,num; coun=0; scanf(%d,&num); docoun=coun+1; num=num10; while(num!=0); printf(count=%dn,coun);num!=0coun=coun+1非00num=num10coun=0輸出coun停輸入num74.2.2 dowhile循環(huán)語(yǔ)句直到型循環(huán) 做循環(huán)一向到前提不滿
7、足為止標(biāo)準(zhǔn) do 語(yǔ)句 while(表達(dá)式);其中 語(yǔ)句是一個(gè)語(yǔ)句或復(fù)合語(yǔ)句 表達(dá)式是前提,求值得真(非0)或假(0) 操縱 先做語(yǔ)句,接著判不表達(dá)式的值,似 非0那么接著循環(huán);否終止循環(huán).表達(dá)式語(yǔ)句非00 loop: 語(yǔ)句; if(表達(dá)式) goto loop; 等價(jià)于84.2.3 循環(huán)語(yǔ)句的挑選循環(huán)語(yǔ)句的挑選:for: 明白循環(huán)次數(shù)、能示意增量型、只要能示意三個(gè)表達(dá)式. 最常用.while:當(dāng)循環(huán)次數(shù)未知時(shí),使用較多.先推斷,后循環(huán)do-while:必須從循環(huán)體中才能獵取循環(huán)變量的值,接著再判決 定是否履行下一次循環(huán).先循環(huán),后推斷94.3 break語(yǔ)句和continue語(yǔ)句4.3.1
8、break語(yǔ)句 當(dāng)break語(yǔ)句表此刻while、dowhile、for語(yǔ)句的循環(huán)體內(nèi), 履行 break時(shí)站即終止循環(huán) 表達(dá)式2語(yǔ)句非00表達(dá)式1表達(dá)式3break例 半徑為1100,要求打印圓 面積100時(shí)的半徑和圓面積#include stdio.hvoid main()int r;float area; for (r=1;r100) break; printf(r=%d,area=%fn,r,area); 表達(dá)式?0非0語(yǔ)句10例4-4輸入一個(gè)正整數(shù)m,推斷它是否為素?cái)?shù).素?cái)?shù)便是只能被1和自身整除的正整數(shù),1不是素?cái)?shù),2是素?cái)?shù).素?cái)?shù):指只能被1和自身整除的正整數(shù)即 用m分不去除以2、3
9、、m-1,全除不完時(shí),m是素?cái)?shù)現(xiàn)實(shí)上除數(shù)的范疇2,m2,能夠證明在2, mim2輸出no10#include stdio.hvoid main( )int i,m; scanf(%d, &m); for(i=2;im2) printf(YESn); else printf(NOn);break11#include stdio.hvoid main( )int i,m; scanf(%d, &m); for(i=2;i=m2;i+) if(m%i=0) printf( NO n); else printf( YES n);如果改動(dòng)程序#include stdio.hvoid ma
10、in( )int i,m; scanf(%d, &m); for(i=2;i=m2;i+) if(m%i=0) printf( NO n); break; printf( YES n);未退出循環(huán)退出循環(huán)未退出程序12要思考界限值: 1不是素?cái)?shù),2是素?cái)?shù)#include stdio.hvoid main( )int i,m; scanf(%d, &m); for(i=2;im2) printf(YESn); else printf(NOn);m i im2)1 2 212 - yes2 2 222 - yes#include stdio.hvoid main( ) int fl
11、ag,m; scanf(%d, &m); if(m=1) flag=0; else if(m=2) flag=1; else int i; flag=1; for(i=2;i=m2;i+) if(m%i=0) flag=0;break; if(flag) printf(YESn); else printf(NOn); 134.3.2 continue語(yǔ)句 標(biāo)準(zhǔn) continue; 當(dāng)continue語(yǔ)句表此刻while、dowhile、for語(yǔ)句的循環(huán)體內(nèi), 履行 continue時(shí)終止本次循環(huán) ,接著履行下一次循環(huán)表達(dá)式2語(yǔ)句非00表達(dá)式1表達(dá)式3continue表達(dá)式?0非0例 把
12、100200之間的不能被3整 除的數(shù)輸出#include stdio.hvoid main()int n; for (n=100;n 1 s=0i=4 4%2 - 0 s=0+4=4i=3 3%2 - 1 s=4i=2 2%2 - 0 s=4+2=6i=1 1%2 - 1 s=6i=0 循環(huán)結(jié)束15循環(huán)嵌套 循環(huán)語(yǔ)句的循環(huán)體中又見(jiàn)諒了另一個(gè)循環(huán)語(yǔ)句(1) while( ) . While( ) . (2) do . While( ) . while( )(3) for( ) . While( ) . 4.4 循環(huán)嵌套16例4-6 求 s=1!+2!+3!+100! 對(duì)比 1!+2!+3!+10
13、0!累加需要循環(huán) s=s+ti!=1*2*i需要循環(huán) t=t*js=0i=1,100,1t=1j=1,i,1t=t*jjs=s+ti輸出s#include stdio.hvoid main()int i,j; double t; s=0; for(i=1;i=100;i+) t=l; for(j=1;j=i;j+) t=t*j; s=s+t; printf(s=%fn,s);17履行環(huán)節(jié) 第一步外層循環(huán)變量i固定在一個(gè)值上,接著履行內(nèi)層循環(huán)j,內(nèi)層循環(huán)變量j改變一個(gè)輪次;外層循環(huán)變量i加1后,再一次履行內(nèi)層循環(huán),j再改變一個(gè)輪次.s=0; for(i=1;i=100;i+)t=l; for(j
14、=1;j=i;j+) t=t*j; s=s+t;18現(xiàn)實(shí)該題單循環(huán)能夠解決i!=(i-1)!*i#include stdio.hvoid main()int i,j; double t=l,s=0; for(i=1;i=100;i+) t=t*i; s=s+t; printf(s=%fn,s);改動(dòng)程序#include stdio.hvoid main()int i,j; double t; s=0; t=l; for(i=1;i=100;i+) for(j=1;j=i;j+) t=t*j; s=s+t; printf(s=%fn,s);?每一個(gè)i!的累積器t,從1最先194.5 循環(huán)程序設(shè)計(jì)
15、循環(huán)程序?qū)崿F(xiàn)要點(diǎn): (1)尋出啥要反復(fù)履行循環(huán)體 (2)重復(fù)到何時(shí)結(jié)束循環(huán)操縱前提循環(huán)次數(shù)、循環(huán)增量關(guān)系或邏輯表達(dá)式例4-7 從鍵盤(pán)輸入一批學(xué)生的成績(jī),尋出最高分.循環(huán)次數(shù): 1,2n;n為已知值輸入.用for循環(huán)設(shè)定一個(gè)特別信息(偽信息)做為循環(huán)的結(jié)束標(biāo)記,因?yàn)槌煽?jī)根基上正數(shù),選用一個(gè)負(fù)數(shù)做為輸入的結(jié)束標(biāo)記.用while或dowhile對(duì)比循環(huán)體:輸入的一個(gè)學(xué)生成績(jī)對(duì)比取高分201,2n;n為已知值輸入.用for循環(huán)#include stdio.hvoid main()int i,mark,max,n; scanf(%d,&n); scanf(%d,&mark); max=m
16、ark; for(i=1;in;i+) scanf(%d,&mark); if(max=0) if(maxmark) max=mark; scanf(%d,&mark); printf(%fn,max);#include stdio.hvoid main()int mark,max; max=-1; doscanf(%d,&mark); if(max=0) printf(%fn,max);22例4-8 將鍵盤(pán)讀入的一個(gè)隨意率性正整數(shù)逆序輸出. 例似鍵盤(pán)輸入12345,屏幕輸出表現(xiàn)54321.分別整數(shù)列位算法整數(shù)x x%10 - 余數(shù) 分別最低位 x=x10 - 去掉最低
17、位 當(dāng)x0或x!=0 循環(huán)分別整數(shù)全部的位例 x=12345 12345%10-5 1234510=12340 1234%10-4 123410=1230 123%10-3 12310=120 12%10-2 1210=10 1%10-1 110=0#include stdio.hvoid main()int x; scanf(%d,&x); while(x) printf(%d ,x%10); x=x10; printf(n);對(duì)比循環(huán)操縱: x0 循環(huán)體:x%10 - 余數(shù) 輸出余數(shù)x=x10 - 去掉最低位23例4-8 將鍵盤(pán)讀入的一個(gè)隨意率性整數(shù)逆序輸出. 設(shè)正數(shù)和負(fù)數(shù)逆序輸出
18、的結(jié)論一樣.即逆序輸出不帶負(fù)號(hào)#include stdio.hvoid main()int x; scanf(%d,&x); while(x) printf(%d ,x%10); x=x10; printf(n);x%10輸出帶負(fù)號(hào)#include stdio.h#include math.hvoid main()int x; scanf(%d,&x); x=fabs(x); while(x) printf(%d ,x%10); x=x10; printf(n);將 x取絕對(duì)值要思考特別解0#include stdio.h#include math.hvoid main()in
19、t x; scanf(%d,&x); x=fabs(x); do printf(%d ,x%10); x=x10; while(x); printf(n);24例4-9 求500之內(nèi)的全部素?cái)?shù),1不是素?cái)?shù),2是素?cái)?shù).對(duì)比 素?cái)?shù)定義: 只能被1或數(shù)自已除完的數(shù)判不素?cái)?shù): (1)給出在2500之間的m數(shù) (2)用2,3,4,.,m-1除,只要有個(gè)被除完,m不是素?cái)?shù) 能夠證明除數(shù)只要取2,3,.mm=2,500,1 k=mi=2,k,1m%i=0iik+1輸出mk0110流程圖程序 #include math.hvoid main()int i,m,k,n=0; for(m=2;m=500;
20、m+) k=sqrt(m); for(i=2;i=k+1) printf(%d ,m);n+; if(n%10=0)printf(n);要驗(yàn)證界限值: 1不是素?cái)?shù),2是素?cái)?shù)25例4-10 求Fibonacci(斐波那契)數(shù)列的前10個(gè)數(shù) 1, 1, 2, 3, 5, 8, 13, 數(shù)之間的關(guān)系F1=1 n=1 F2=1 n=2 Fn =Fn-1+Fn-2 n3對(duì)比前2項(xiàng)之和等于后項(xiàng)值 f3=f1+f2i= 1 2 3 4 5 6 7f1= 1 1 1 2 3 5f2= 1 1 2 3 5 8f3= 2 3 5 8 13 +得 f1=f2 f2=f3 f3=f1+f226流程圖f1=1f2=1f
21、3=2i10i=4i=i+110輸出f1,f2,f3f1=f2f2=f3f3=f1+f2輸出f3表達(dá)式1表達(dá)式2表達(dá)式3程序#include stdio.hvoid main()int i,f1,f2,f3; f1=1;f2=1;f3=2; printf(%d %d %d ,f1,f2,f3); for(i=4;i=10;i+) f1=f2; f2=f3; f3=f1+f2; printf(%d ,f3); if(i%5=0) printf(n); 終27例4-11 某工地搬運(yùn)磚塊,已知男人一人搬3塊,女的一人搬2塊,小孩兩人搬一塊.咨詢用45人正好搬45塊磚,有幾種搬法?列出方程:men+women+child=45men*3+women*2+child*0.5=452個(gè)方程解3個(gè)未知數(shù),只有通過(guò)試算,有多種答案.即 m
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地下底板施工方案
- 車間大線 施工方案
- 光纖跳纖施工方案
- 2025年表面改性金屬材料合作協(xié)議書(shū)
- 長(zhǎng)沙鍋爐澆注料施工方案
- 張掖非開(kāi)挖排水管施工方案
- 高一開(kāi)學(xué)發(fā)言稿
- 房屋租賃合同模板范文6篇
- 書(shū)香班級(jí)的發(fā)言稿
- 醫(yī)院院長(zhǎng)發(fā)言稿
- word公章模板
- 中西醫(yī)結(jié)合腫瘤學(xué)試卷(含答案)
- 制衣常識(shí)中英對(duì)照精講
- 開(kāi)學(xué)第一課我們開(kāi)學(xué)啦主題班會(huì)PPT課件(帶內(nèi)容)
- 體育訓(xùn)練隊(duì)隊(duì)規(guī)
- 電梯工程開(kāi)工報(bào)告(直梯)(共1頁(yè))
- ANSI B165《鋼制管法蘭及法蘭管件》
- 集團(tuán)公司財(cái)務(wù)管理內(nèi)部交易管理辦法,
- 視頻會(huì)議系統(tǒng)測(cè)試方案匯總
- 五年級(jí)第二學(xué)期體育知識(shí)結(jié)構(gòu)圖
- 部編版三年級(jí)下冊(cè)第八單元教材解讀
評(píng)論
0/150
提交評(píng)論