版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.1 概述概述 循環(huán)結(jié)構(gòu)是高級(jí)語(yǔ)言中一個(gè)重要的基本結(jié) 構(gòu),它可以利用很少的語(yǔ)句簡(jiǎn)單方便地重復(fù) 執(zhí)行一些操作,因此應(yīng)用很廣。 1、基本概念 (1)循環(huán)條件:控制循環(huán)的條件。 (2)循環(huán)變量:確定循環(huán)條件的變量。 (3)循環(huán)體:程序中需要重復(fù)執(zhí)行的語(yǔ)句。 第第5章章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 2、循環(huán)的種類(lèi) (1)當(dāng)型循環(huán):先判斷條件,當(dāng)條件成立時(shí)執(zhí)行循環(huán) 體,條件不成立循環(huán)體一次也不執(zhí)行。 (2)直到型循環(huán):先執(zhí)行循環(huán)體,后判斷條件,當(dāng)條 件成立時(shí)繼續(xù)循環(huán),條件不成立結(jié)束循環(huán)(至少執(zhí)行 循環(huán)體一次)。 3、C語(yǔ)言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的四種語(yǔ)句: while 語(yǔ)句 (當(dāng)型) dowhile 語(yǔ)
2、句 (直到型) for 語(yǔ)句 (當(dāng)型) goto語(yǔ)句和if 語(yǔ)句結(jié)合形成循環(huán)結(jié)構(gòu)(容易形成非結(jié) 構(gòu)化,可以不用) 5.2 goto語(yǔ)句以及用goto語(yǔ)句構(gòu)成循環(huán) 一、自由轉(zhuǎn)向語(yǔ)句goto 1、一般形式 或: 標(biāo)號(hào):語(yǔ)句 goto 標(biāo)號(hào) goto 標(biāo)號(hào) 標(biāo)號(hào): 語(yǔ)句 (形成循環(huán)結(jié)構(gòu)) (不形成循環(huán)結(jié)構(gòu)) 2、說(shuō)明 (1)標(biāo)號(hào)為合法的標(biāo)識(shí)符,不能是數(shù)字等。可加在任 何語(yǔ)句的前面。 (2)goto語(yǔ)句是造成程序非結(jié)構(gòu)化的重要原因,因此 盡量不用(C語(yǔ)言中完全可以不用)。 二、用goto語(yǔ)句構(gòu)成循環(huán):在上面第一種形式中,將 “goto 標(biāo)號(hào)”改為: if(條件) goto 標(biāo)號(hào); 例 用if 和got
3、o語(yǔ)句構(gòu)成循環(huán),求 100 1n n main() int i,sum=0; i=1; loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum); sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050 循環(huán)初值 循環(huán)終值 循環(huán)變量增值 循環(huán)條件 循環(huán)體 5.3 while 5.3 while 語(yǔ)句語(yǔ)句 1、while 語(yǔ)句的一般形式 while (條件) 循環(huán)體語(yǔ)句 2、說(shuō)明 (1)while 是關(guān)鍵字,“while (條件)”的意 思 為“當(dāng)條件成立時(shí)執(zhí)行”; (2)“條件”為關(guān)系表達(dá)式、
4、邏輯表達(dá)式和任 意 合法的表達(dá)式,其兩端的圓括號(hào)不能少; (3)循環(huán)體為一條語(yǔ)句或復(fù)合語(yǔ)句,可執(zhí)行多 次,也可能一次也不執(zhí)行。 3、while循環(huán)的執(zhí)行過(guò)程: 計(jì)算表達(dá)式(條件) 值為假(0) 值為真 (非0) 執(zhí)行循環(huán)體 例例 計(jì)算計(jì)算1100之間所有之間所有3的倍數(shù)的數(shù)的和。的倍數(shù)的數(shù)的和。 main() int i,s; i=1;s=0; while(i=100) if (i%3=0) s=s+i; i+; printf(“s=%dn”,s); 5.4 dowhile 5.4 dowhile 語(yǔ)句語(yǔ)句 1、dowhile 語(yǔ)句的一般形式 do 循環(huán)體語(yǔ)句 while (條件); 2、說(shuō)明
5、 (1)do、while是C語(yǔ)言的關(guān)鍵字; (2)循環(huán)體是一條語(yǔ)句或復(fù)合語(yǔ)句; (3)“條件”為關(guān)系表達(dá)式、邏輯表達(dá)式和任 意合法的表達(dá)式,兩端的圓括號(hào)不能少,其 后的“;”表示dowhile語(yǔ)句的結(jié)束,也不 能少。 3、do-while循環(huán)的執(zhí)行過(guò)程: 執(zhí)行循環(huán)體 計(jì)算表達(dá)式(條件) 值為假(0) 值為真 (非0) 例例 求兩個(gè)整數(shù)求兩個(gè)整數(shù)m和和n最大公約數(shù)最大公約數(shù) main() int m,n,a,b,r; scanf(“%d%d”, a=m;b=n; dor=a%b; a=b; b=r;while(r!=0); printf(“the greatest common divide o
6、f”); printf(“%d,%d is %dn”,m,n,a); 5.5 for 5.5 for 語(yǔ)句語(yǔ)句 1、for語(yǔ)句的一般形式 for(初始化表達(dá)式;條件表達(dá)式;修正表達(dá)式) 循環(huán)體語(yǔ)句 2、說(shuō)明 (1)for為C語(yǔ)言的關(guān)鍵字; (2)for后圓括號(hào)中的三個(gè)表達(dá)式可以是任意表達(dá)式,它們的作 用如下: 初始化表達(dá)式:對(duì)循環(huán)變量等賦初值??墒。藭r(shí)初始化在 for語(yǔ)句前進(jìn)行; 條件表達(dá)式:控制循環(huán)的條件,為關(guān)系表達(dá)式、邏輯表達(dá)式 或任意合法的表達(dá)式。一般不能省,若省,可能產(chǎn)生死循環(huán); 修正表達(dá)式:對(duì)循環(huán)變量進(jìn)行修正??墒?,此時(shí)對(duì)循環(huán)變量 的修正在循環(huán)體中或在條件表達(dá)式中進(jìn)行。 (3)循環(huán)
7、體語(yǔ)句為一條語(yǔ)句或復(fù)合語(yǔ)句 3、for循環(huán)結(jié)構(gòu)的執(zhí)行過(guò)程,可用下圖表示: 假 (0) for(初始化表達(dá)式; 條件(表達(dá)式); 修正表達(dá)式) 真 (非0 ) 循環(huán)體語(yǔ)句 例1:求sum=1+2+3+100 sum=0; for(i=1;i=100;i+)sum+=i; 其中i為循環(huán)變量。此程序段可改寫(xiě)成很多形式,例如: (1) for(sum=0,i=1;i=100;sum+=i,i+); /*無(wú)循環(huán)體,含在修正表達(dá)式中*/ (2) sum=0; i=1; /*初始化放在for語(yǔ)句之前*/ for(;i=100;i+)sum+=i; (3) sum=0;i=0; for(;+i=100;)su
8、m+=i; /*條件表達(dá)式同時(shí)起到修正表達(dá)式的作用*/ (4) sum=0; i=1; for(;i=100;)sum+=i;i+; /*對(duì)循環(huán)變量的修正放在循環(huán)體中*/ 可見(jiàn)for語(yǔ)句的用法相當(dāng)靈活,功能很強(qiáng),用途很廣。 例例2:2:寫(xiě)出下面程序的運(yùn)行結(jié)果寫(xiě)出下面程序的運(yùn)行結(jié)果 main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); 例例3 打印所有的打印所有的“水仙花數(shù)水仙花數(shù)“。所謂。所謂” 水仙花數(shù)水仙花數(shù)”是指一個(gè)是指一個(gè)3位數(shù),其各位位數(shù),其各位 數(shù)字的立方和等于該數(shù)本身。例如,數(shù)字的立方
9、和等于該數(shù)本身。例如, 153是一個(gè)是一個(gè)“水仙花數(shù)水仙花數(shù)“,因?yàn)?,因?yàn)?153=13+53+33 main() int i,j,k,n; printf(“水仙花水仙花“數(shù)是數(shù)是:”); for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i+j*j*j+k*k*k) printf(“%4d”,n); printf(“n”); 5.6 5.6 循環(huán)結(jié)構(gòu)的嵌套循環(huán)結(jié)構(gòu)的嵌套 由于循環(huán)體可以是任意語(yǔ)句,因此也可以是循環(huán) 語(yǔ)句,這就構(gòu)成循環(huán)結(jié)構(gòu)的嵌套。既可以是同種循環(huán) 語(yǔ)句嵌套,也可以是不同循環(huán)語(yǔ)句相互嵌套。 嵌套循環(huán)的特點(diǎn):外
10、循環(huán)變量每取一個(gè)值,內(nèi)循環(huán)要 循環(huán)一周。 例:百雞問(wèn)題:百錢(qián)買(mǎi)百雞,公雞三塊錢(qián)一只,母雞 兩塊錢(qián)一只,小雞一塊錢(qián)買(mǎi)三只,問(wèn)共買(mǎi)公雞、母 雞和小雞各多少只? 分析:可用窮舉算法,公雞不超過(guò)33只,母雞不超過(guò) 49只,小雞=100-公雞-母雞??捎们短椎膚hile或 do-while或for循環(huán)編程。嵌套的while循環(huán)如下: main( ) int cock=0,hen,chick; while(cock=33) hen=0; while(hen=49) chick=100-cock-hen; if(3*cock+2*hen+chick/3=100 hen+; cock+; 5.7 流程限定轉(zhuǎn)向
11、語(yǔ)句:流程限定轉(zhuǎn)向語(yǔ)句:break和和continue 5.7.1 break(中斷)語(yǔ)句。前面學(xué)過(guò)它的作用有: 1、跳出當(dāng)層switch結(jié)構(gòu) 2、循環(huán)體中的break語(yǔ)句,使流程跳出當(dāng)層循環(huán) 語(yǔ)句。 注意:循環(huán)體中的break語(yǔ)句應(yīng)作為 if 語(yǔ)句的一 個(gè)分支,即是在一定條件下才跳出循環(huán)。 例例1 1:對(duì)于整數(shù)半徑的圓,求面積大于:對(duì)于整數(shù)半徑的圓,求面積大于100100的最小的面的最小的面 積。積。 #define PI 3.14159 main( ) int r; float area; for(r=1;r100) break; printf(“area=%fn, area); 5.7.
12、2 continue(繼續(xù))語(yǔ)句 1、一般形式 continue; 2、放置位置:循環(huán)體中,一般也是作為if語(yǔ)句 的一個(gè)分支,以防出現(xiàn)死語(yǔ)句。 3、作用:(結(jié)束本次循環(huán))跳過(guò)循環(huán)體中余下 的語(yǔ)句,然后: 對(duì)while循環(huán)和dowhile循環(huán):繼續(xù)計(jì) 算(條件)表達(dá)式以確定是否繼續(xù)循環(huán); 對(duì)for循環(huán):計(jì)算修正表達(dá)式,然后計(jì)算 條件表達(dá)式以確定是否繼續(xù)循環(huán)。 例1 寫(xiě)出下面程序的運(yùn)行結(jié)果 main( ) int k=0, s=0, i; for(i=1;i5)printf(*i=%d,s=%d,k=%dn,i,s,k); continue; k=k+s; printf(i=%d,s=%d,k=%
13、dn,i,s,k); 當(dāng)s5時(shí),由于continue語(yǔ)句的作用,for循環(huán)中循環(huán)體的 最后兩條語(yǔ)句不再執(zhí)行。程序輸出四行信息: i=1, s=1, k=1 i=2, s=3, k=4 * i=3, s=6, k=4 * i=4, s=10, k=4 4、continue語(yǔ)句與break語(yǔ)句比較。 實(shí)驗(yàn)五實(shí)驗(yàn)五 1、利用公式求、利用公式求cosx的近似值(精度為的近似值(精度為0.01) 2、每個(gè)蘋(píng)果、每個(gè)蘋(píng)果 0.8元,第一天買(mǎi)元,第一天買(mǎi)2個(gè)蘋(píng)果,第二個(gè)蘋(píng)果,第二 天開(kāi)始,每天買(mǎi)前一天的天開(kāi)始,每天買(mǎi)前一天的2倍,直到購(gòu)買(mǎi)的蘋(píng)倍,直到購(gòu)買(mǎi)的蘋(píng) 果個(gè)數(shù)達(dá)到不超過(guò)果個(gè)數(shù)達(dá)到不超過(guò)100的最大值。
14、編寫(xiě)程序求的最大值。編寫(xiě)程序求 每天平均花多少錢(qián)?每天平均花多少錢(qián)? )!2( ) 1(. ! 6! 4! 2 1cos 2 0 642 n xxxx x n n n 3、編寫(xiě)程序,從鍵盤(pán)輸入、編寫(xiě)程序,從鍵盤(pán)輸入6名學(xué)生的名學(xué)生的5門(mén)成績(jī),門(mén)成績(jī), 分別統(tǒng)計(jì)出每個(gè)學(xué)生的平均成績(jī)。分別統(tǒng)計(jì)出每個(gè)學(xué)生的平均成績(jī)。 4、試編寫(xiě)程序,找出、試編寫(xiě)程序,找出1至至99之間的全部同構(gòu)數(shù)。之間的全部同構(gòu)數(shù)。 同構(gòu)數(shù)是這樣一組數(shù):它出現(xiàn)在平方數(shù)的右同構(gòu)數(shù)是這樣一組數(shù):它出現(xiàn)在平方數(shù)的右 邊。例如:邊。例如:5是是25右邊的數(shù),右邊的數(shù),25是是625右邊的右邊的 數(shù),數(shù),5和和25都是同構(gòu)數(shù)。都是同構(gòu)數(shù)。
15、5、打印形狀為直角三角形的九九乘法表。、打印形狀為直角三角形的九九乘法表。 習(xí)題課習(xí)題課 例例1 已知正弦值近似計(jì)算公式為:已知正弦值近似計(jì)算公式為: 輸入輸入x和和eps,按上述公式計(jì)算,按上述公式計(jì)算sinx的近似的近似 值,要求計(jì)算誤差小于給定的值,要求計(jì)算誤差小于給定的eps. . )!12 ( ) 1(. ! 7! 5! 3 sin 12753 n xxxx xx n n #include main() float x,eps,s,m=0.0,mo; int n=0,i=1,j,t; printf(“enter float x scanf(“%f%f”, do t=s=1; mo=m
16、; for (j=1;jeps); printf(“%d,sin(%f)=%fn”,n,x,m); 例例2 打印輸出下列圖案打印輸出下列圖案 * * * * * * * main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(“ “); for (j=1;j=2*i-1;j+) printf(“*”); printf(“n”); for (i=1;i=3;i+) for (j=1;j=i;j+) printf(“ “); for (j=1;j=7-2*i;j+) printf(“*”); printf(“n”); 例例3 一個(gè)正整數(shù)如果恰好等于它的因子之和(除一個(gè)正整數(shù)如果恰好等于它的因子之和(除 自身外),則稱(chēng)該數(shù)為完全數(shù),例如:自身外),則稱(chēng)該數(shù)為完全數(shù),例如: 6=1+2+3,6為完全數(shù)。編程求為完全數(shù)。編程求1000以?xún)?nèi)的所以?xún)?nèi)的所 有完全數(shù)。有完全數(shù)。 main() int a,i,m; for (a=1;a=1000;a+) for (m=0,i=1 ;i=a/2;i+) if (!(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫(xiě)字樓訪(fǎng)客登記制度
- 2024年商場(chǎng)物業(yè)管理合同:定制化管理服務(wù)協(xié)議
- 醫(yī)院大樓石材干掛施工合同
- 親子酒店租賃合同模板
- 新一代信息技術(shù)教案 第3章 探究云計(jì)算
- 橋梁建設(shè)瓦工施工合同范本
- 生態(tài)旅游開(kāi)發(fā)魚(yú)塘招投標(biāo)方案
- 油氣開(kāi)采木方施工合作
- 化妝品企業(yè)?;肥褂冒踩?guī)范
- 電影院裝修意向書(shū)
- 飛機(jī)維修計(jì)劃與調(diào)度管理考核試卷
- 中國(guó)鹽業(yè)集團(tuán)有限公司招聘筆試題庫(kù)2024
- 2024年秋新人教版地理七年級(jí)上冊(cè)全冊(cè)教學(xué)課件(新版教材)
- 運(yùn)動(dòng)康復(fù)服務(wù)行業(yè)五年發(fā)展洞察報(bào)告
- 2024年甘肅酒泉肅州區(qū)選拔項(xiàng)目人員納入編制管理107人高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2025版 高考試題分析-數(shù)學(xué)-部分4
- 醫(yī)療器械創(chuàng)新售后服務(wù)體系建設(shè)與應(yīng)用示范閱讀札記
- 汽油機(jī)油低速早燃性能測(cè)試方法編制說(shuō)明
- 2023-2024學(xué)年山東省濟(jì)南市歷城區(qū)九年級(jí)(上)期中英語(yǔ)試卷
- 2024年全國(guó)注冊(cè)消防工程師之消防技術(shù)綜合能力考試歷年考試題(詳細(xì)參考解析)
- IWAY6.0實(shí)施計(jì)劃完整
評(píng)論
0/150
提交評(píng)論