版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計,計算機(jī)學(xué)院,第六章 循環(huán)結(jié)構(gòu)的程序設(shè)計,6.1 循環(huán)的基本概念 6.2 用while語句設(shè)計循環(huán)結(jié)構(gòu)程序 6.3 用do_while語句設(shè)計循環(huán)結(jié)構(gòu)程序 6.4 用for語句設(shè)計循環(huán)結(jié)構(gòu)程序 6.5 Break語句與continue語句 6.6 幾種循環(huán)語句的比較 6.7 循環(huán)的嵌套,6.1 循環(huán)的基本概念,求 S=1+2+3+.+100,S=0; S=S+1; S=S+2; . S=S+100;,S=0 S=S+i (i=1,2,.,100),s=0,i=1,i100,s=s+i,i=i+1,y,n,6.1 循環(huán)的基本概念,重復(fù)作某件事的現(xiàn)象稱為“循環(huán)”; 循環(huán)結(jié)構(gòu)就是在滿足
2、循環(huán)條件時,重復(fù)執(zhí)行某程序段,直到循環(huán)條件不滿足為止,重復(fù)執(zhí)行的程序稱為循環(huán)體; 循環(huán)結(jié)構(gòu)有“當(dāng)型”和“直到型”兩種形式;,6.2 用while語句設(shè)計循環(huán)結(jié)構(gòu)程序,while 語句: 形式: while(表達(dá)式K) 循環(huán)體S(由若干語句組成) 功能:先判斷條件,當(dāng)條件為真時反復(fù)執(zhí)行循環(huán) 體,條件為假則退出循環(huán)。,6.2 用while語句設(shè)計循環(huán)結(jié)構(gòu)程序,while語句說明: while語句構(gòu)成的循環(huán)屬于“當(dāng)型”循環(huán); 表達(dá)式是控制循環(huán)的條件,可以是任何類型的表達(dá)式; while語句的特點(diǎn)是:先判斷,后執(zhí)行,有可能循環(huán)一次也不執(zhí)行;,6.2 用while語句設(shè)計循環(huán)結(jié)構(gòu)程序,求和: 1+2+3
3、+.+100=? main() int i,s; i=1;s=0; while(i=100) s=s+i;i+; printf(“s=%dn”,s); ,問題:是否可以 1、去掉while語句的 2、去掉i+; 3、將i+; 移到s=s+i;之前,while語句-實(shí)例,例1:從鍵盤輸入10個整數(shù),求這10個整數(shù)之和。,count=count+1,成立,不成立,輸出結(jié)果total,計數(shù)器count=0,累加器total=0,輸入num,total += num,開始,結(jié)束,while ( count=10 ) ,count = count + 1;,scanf(%d, ,total = tota
4、l + num;,程序主體,while語句-實(shí)例,#include main ( ) int count,num,total; /* count:計數(shù)器,num:輸入的整數(shù) */ count = total = 0; /* total:存放累加和 */,while ( count=10 ) /* 循環(huán)控制條件 */ count = count + 1; /* 循環(huán)體 */ printf (Enter the No.%d=, count); scanf (%d, /* 計算累加和 */ ,printf(Total=%dn, total); ,while語句-實(shí)例,例2:求 1 到 10 的階乘
5、n!。,n = n * i,成立,不成立,計數(shù)器 i = 1,累積器 n = 1,輸入結(jié)果,i = i + 1,開始,結(jié)束,while ( i = 10 ) ,n = n * i;,printf(%d, n);,i = i + 1;,程序主體,遞推公式: f(n)=1 當(dāng)n=1時 f(n)=f(n-1)*n 當(dāng)n1時,while語句-實(shí)例3,循環(huán)嵌套: 在循環(huán)體中,又包含有循環(huán)語句。 例3:輸出下三角形乘法九九表。 1 2 3 4 5 6 7 8 9 - 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42
6、49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 假設(shè):行號為i ,列號為j,i=6 j=5 i*j,(1=i=9),(1=j=i),則:第 i 行中一共要輸出 i 個乘積。,while語句-實(shí)例,#include main ( ) int i=1, j; /* i:行計數(shù)器 j:列計數(shù)器 */ while ( i = 9 ) /* 控制打印表頭 */ printf ( %4d, i+ ); printf (n-n); i=1; while ( i= 9 ) j = 1; /* 列計數(shù)器置1 */ while ( j = i ) /* 嵌套
7、的二重循環(huán)。輸出第i行 */ printf (%4d, i*j ); j +; /* 列計數(shù)器+1 */ printf (n); /* 一行輸出結(jié)束后,輸出n */ i +; /* 行計數(shù)器+1 */ ,外層循環(huán)體每執(zhí)行1次,內(nèi)層循環(huán)要完成由內(nèi)循環(huán)條件所決定的次數(shù),while語句使用注意,1.while (0) . 由于循環(huán)的條件表達(dá)式恒等于0,循環(huán)體永遠(yuǎn)也不會執(zhí)行,是編程者的錯誤。 2.while (1) . 由于循環(huán)的條件表達(dá)式恒等于 1,所以不可能通過循環(huán)控制條件來結(jié)束循環(huán)體的執(zhí)行,稱為“死循環(huán)”。 3.為了保證循環(huán)正常運(yùn)行,應(yīng)該特別注意: 循環(huán)控制條件 控制條件的初始狀態(tài)(初始值) 循
8、環(huán)體內(nèi)部對控制條件的影響,6.3 用do_while語句設(shè)計循環(huán)結(jié)構(gòu)程序,do_while語句 形式: do 循環(huán)體Swhile(K); 先執(zhí)行循環(huán)體,當(dāng)條件為真時反 復(fù)執(zhí)行循環(huán)體,條件為假則退出循環(huán)。,6.3 用do_while語句設(shè)計循環(huán)結(jié)構(gòu)程序,do_while語句說明: do_while語句構(gòu)成“直到型”循環(huán)結(jié)構(gòu); do_while語句的特點(diǎn)是先執(zhí)行后判斷,循環(huán)體至少執(zhí)行一次; 重復(fù)執(zhí)行循環(huán)體,直到表達(dá)式為假時退出循環(huán);,6.3 用do_while語句設(shè)計循環(huán)結(jié)構(gòu)程序,求積: n!=1*2*3*.*n main() /* 求n! */ int i,n ,s; scanf(“%d”,;
9、double s;,%f,用do_while語句設(shè)計循環(huán)結(jié)構(gòu),main() int s=0,x; scanf(%d, ,main() int s=0,x; scanf(%d, ,輸入:12 輸出: s=12,循環(huán)至少 執(zhí)行一次,循環(huán)沒有 被執(zhí)行,輸入:12 輸出: s=0,while 與do while的比較,6.4 用for語句設(shè)計循環(huán)結(jié)構(gòu)程序,for語句: 形式: for(k1;k2;k3) S(循環(huán)體) 功能: ki-表達(dá)式 k1 - 用來確定循環(huán)變量的初值 k2 - 確定循環(huán)控制條件 k3 - 確定循環(huán)變量的增量 先計算k1,當(dāng)k2為真時執(zhí)行循環(huán)體 并計算k3,然后再判斷k2,直到k2
10、為 假時退出循環(huán)。,6.4 用for語句設(shè)計循環(huán)結(jié)構(gòu)程序,計算1*2*100=? main( ) int i;double s=1; for(i=1;i=100;i+) s=s*i; printf(“s=%fn”,s); ,循環(huán)變量初值,循環(huán)條件,循環(huán)變量步長,循環(huán)體中,如有多條語句要用 括起來。,for語句中的三個表達(dá)式(表達(dá)式1,表達(dá)式2和表達(dá)式3)中的任意一個都可省略,但是分號不能省略。,for (n=0;n+) 缺表達(dá)式2, 造成死循環(huán),不可使用! (除非循環(huán)體中有使循環(huán)退出的條件) for (n=0;n100;) 缺表達(dá)式3, n增量應(yīng)在循環(huán)體內(nèi)進(jìn)行 for (; ;) 三個表達(dá)式都
11、缺省, 死循環(huán)(同2) for (;n100;) 缺表達(dá)式1和表達(dá)式3,for語句的其它幾種變化形式,for (;n100;n+) 缺表達(dá)式1, n 應(yīng)在循環(huán)之前賦初值,分號始終不能缺!,for 語句-實(shí)例,輸出圖形 * * * * * 使用嵌套循環(huán)完成,main() int i,j,n; scanf(%d, ,外循環(huán)對行 內(nèi)循環(huán)對列,6.5 Break語句與continue語句,break語句: 形式:break; (用于循環(huán)或switch語句中) 功能:終止執(zhí)行所在的循環(huán)(或switch)語句 continue語句: 形式:continue; (只能用于循環(huán)體中) 功能:結(jié)束本次循環(huán).(不
12、是結(jié)束整個循環(huán)),6.5 Break語句與continue語句,main() /*求1-13中不能被3整除的數(shù)*/ int i; for(i=1;i=13;i+) if(i%3 = 0) continue; printf(“%d,”,i); 輸出 ?,1,2,4,5,7,8,10,11,13,1,2,若把continue; 換成 break;則輸出,break;,6.6 幾種循環(huán)語句的比較,三種循環(huán)語句可以處理同一問題; for和 while循環(huán)語句: 先判斷, 后執(zhí)行(可能不執(zhí)行循環(huán))。do_while循環(huán)語句: 先執(zhí)行, 后判斷(至少執(zhí)行一次循環(huán)) for語句用于循環(huán)次數(shù)確定的情況,whi
13、le、do_while用于循環(huán)次數(shù)不確定的情況; do_while語句更適合首次循環(huán)肯定執(zhí)行的情況;,while、do_while語句只能表達(dá)循環(huán)控制條件,而for語句有3個表達(dá)式,不僅能控制循環(huán),而且能控制循環(huán)變量的初值及其變化,功能更強(qiáng)。 其中for語句中的三個表達(dá)式都可省掉(不采用)或部分省掉。 通常表達(dá)式2不可少,否則循環(huán)中必須有使循環(huán)退出的條件 如果省掉第一、二表達(dá)式,分號不可少,6.6 幾種循環(huán)語句的比較,循環(huán)體可放入表達(dá)式 3,for ( i=1; i=10; printf (“%5d”, i ) , i+) ;,因?yàn)檠h(huán)體在表達(dá)式 2 之后,表達(dá)式 3 之前執(zhí)行,如果將 循環(huán)體
14、語句放入表達(dá)式 3,循環(huán)體語句與原來的表達(dá)式 3構(gòu)成逗 號表達(dá)式,作為循環(huán)語句新的表達(dá)式 3,而 for 語句就無循環(huán)體 語句了。,語法上循環(huán)結(jié)構(gòu)必須要有循環(huán)體語句,否則會出現(xiàn)語法錯誤。,為解決這個問題,在for 語句后加一空語句,作為循環(huán)體 語句用以解決語法的要求。,空語句,6.6 幾種循環(huán)語句的比較,6.7 循環(huán)的嵌套,循環(huán)嵌套:循環(huán)語句的循環(huán)體中又出現(xiàn)循環(huán)語句。 main() /*2重循環(huán)*/ int i; for(i=1;i=2;i+) /*外循環(huán)*/ printf(“i=%d,j=”,i); for(j=1;j=3;j+)/*內(nèi)循環(huán)*/ printf(“%d,”,j); printf
15、(“n”); 輸出 ?,外循環(huán)的每一次循環(huán)(i), 均對應(yīng)整個內(nèi)循環(huán)(j=1,2,3),i=1,j=,1,i=2,j=,1,2,3,2,3,嵌套結(jié)構(gòu)規(guī)則,外循環(huán),內(nèi)循環(huán),交叉循環(huán),外循環(huán) 入口,內(nèi)循環(huán)出口,內(nèi)循環(huán)出口,外循環(huán)出口,外循環(huán)出口,1. 在嵌套的循環(huán)中外循環(huán)與內(nèi)循環(huán)變量不可同名。,2. 外循環(huán)與內(nèi)循環(huán)不可交叉。,6.8 應(yīng)用實(shí)例,main() /*求10到12中的素數(shù)*/ int i,j,k; scanf(“%d”, 輸入10 輸出 輸入11 輸出 輸入12 輸出,for(k=10;k13;k+) /* 外循環(huán)提供要檢測的數(shù) k*/ ,內(nèi)循環(huán),10 no,11 yes,12 no,輸
16、出: 10 no 11 yes 12 no,6.8 應(yīng)用實(shí)例,求Fibonacci 數(shù)列 1,1,2,3,5,8.的前20項 遞推公式: f1=1,f2=1 fi=fi-1+fi-2 (i=3,4,20),main( ) long f1,f2,f; int i; f1=f2=1; printf(%12ld %12ldn,f1,f2); for(i=3;i=20;i+) f=f1+f2; f1=f2;f2=f;/* 為下一項做準(zhǔn)備*/ printf(%12ld ,f); if(i%2=0) printf(“n”);/*每行2個數(shù)*/ ,6.8 應(yīng)用實(shí)例,f1,f2,f1,f2,f1 .,main
17、( ) long f1,f2; int i; f1=f2=1; for(i=1;i=10;i+) printf(%12ld %12ldn,f1,f2); f1=f1+f2; f2=f2+f1;/*一次產(chǎn)生兩個數(shù)*/ ,6.8 應(yīng)用實(shí)例,main( ) int i,j,k,a,t=0; for(i=1;i=9;i+) for(j=1;j=9;j+) for(k=1;k=9;k+) for(a=1;a=9;a+) if(i=j|i=k|i=a) continue; if(j=k|j=a|k=a) continue; if(i+j+k+a!=12) continue; printf(“%d,%d,%
18、d,%d ”,i,j,k,a); t+;if(t%6=0) printf(“n”);/*每行6個排列*/ ,從1到9中選出4個互不相同的數(shù)構(gòu)成排列, 并使它們的和等于12,輸出所有這樣的排列.如1,2,3,6,循環(huán)94次 判斷8*94=52488次,6.8 應(yīng)用實(shí)例,main( ) int i,j,k,a,t=0; for(i=1;i=6;i+) for(j=1;j=6;j+) for(k=1;k=6;k+) for(a=1;a=6;a+) if(i=j|i=k|i=a) continue; if(j=k|j=a|k=a) continue; if(i+j+k+a!=12) continue; printf(“%d,%d,%d,%d ”,i,j,k,a); if(t%6=0) printf(“n”); ,4個數(shù)中任意3個數(shù)的和最小值為6,所以4個數(shù)均不超過6,循環(huán)64次 判斷8* 64=10368次,6.8 應(yīng)用實(shí)例,main( ) int i,j,k,a,t=0; for(i=1;i6|
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 明年促銷活動策劃方案(3篇)
- 醫(yī)鬧治理:法律威懾與人文疏導(dǎo)
- 醫(yī)療質(zhì)量考核中文書書寫指標(biāo)設(shè)定實(shí)踐
- 醫(yī)療設(shè)備采購質(zhì)量與臨床適配性分析
- 醫(yī)療設(shè)備采購團(tuán)隊建設(shè)與能力提升
- 醫(yī)療設(shè)備采購中的風(fēng)險評估與應(yīng)對
- 醫(yī)療設(shè)備采購中的ESG理念應(yīng)用
- 心血管外科患者的溝通技巧
- 2026年博樂邊合區(qū)管理委員會應(yīng)急與生態(tài)環(huán)境局招聘備考題庫帶答案詳解
- 2026年安溪沼濤中學(xué)秋季招聘編外合同制教師備考題庫及一套參考答案詳解
- 2026年馬年德育實(shí)踐作業(yè)(圖文版)
- 醫(yī)院實(shí)習(xí)生安全培訓(xùn)課課件
- 四川省成都市武侯區(qū)西川中學(xué)2024-2025學(xué)年八上期末數(shù)學(xué)試卷(解析版)
- 2026年《必背60題》抖音本地生活BD經(jīng)理高頻面試題包含詳細(xì)解答
- 2024人教版七年級數(shù)學(xué)上冊全冊教案
- GB/T 20033.3-2006人工材料體育場地使用要求及檢驗(yàn)方法第3部分:足球場地人造草面層
- GB/T 18997.2-2020鋁塑復(fù)合壓力管第2部分:鋁管對接焊式鋁塑管
- GB/T 10067.47-2014電熱裝置基本技術(shù)條件第47部分:真空熱處理和釬焊爐
- 狀語從句精講課件
- JJG544-2011《壓力控制器檢定規(guī)程》規(guī)程試題試題
- 施工現(xiàn)場車輛進(jìn)出沖洗記錄
評論
0/150
提交評論