第4章 循環(huán)結(jié)構(gòu)程序設(shè)計

上傳人:仙*** 文檔編號:47362157 上傳時間:2021-12-20 格式:PPT 頁數(shù):74 大?。?51.52KB
收藏 版權(quán)申訴 舉報 下載
第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第1頁
第1頁 / 共74頁
第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第2頁
第2頁 / 共74頁
第4章 循環(huán)結(jié)構(gòu)程序設(shè)計_第3頁
第3頁 / 共74頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第4章 循環(huán)結(jié)構(gòu)程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(74頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh1第第 四四 章章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh2n熟練掌握三種循環(huán)語句的基本結(jié)構(gòu)以及循環(huán)語句的嵌套。熟練掌握三種循環(huán)語句的基本結(jié)構(gòu)以及循環(huán)語句的嵌套。n掌握掌握goto語句的一般形式。語句的一般形式。n熟練掌握熟練掌握break、continue跳轉(zhuǎn)語句使用跳轉(zhuǎn)語句使用n使用三種基本結(jié)構(gòu)編寫簡單的程序使用三種基本結(jié)構(gòu)編寫簡單的程序本章重點本章重點2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh34.14.1循環(huán)的概念循環(huán)的概念循環(huán):循環(huán): 就是有規(guī)律地重復執(zhí)行某些語句的過程。就是有規(guī)律地重復執(zhí)行某些語句

2、的過程。 例如:要計算例如:要計算0到到360度的正弦函數(shù),要求每隔度的正弦函數(shù),要求每隔0.1度計算度計算一次,如果沒有循環(huán)結(jié)構(gòu),則:一次,如果沒有循環(huán)結(jié)構(gòu),則: . x=0.0; y=sin(x); printf(“y=%f”,y); x=0.1; y=sin(x*3.14159/180.0); printf(“y=%f”,y); 對于如此簡單的問題,需要對于如此簡單的問題,需要10000多條語句。多條語句。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh5 循環(huán)結(jié)構(gòu)來處理重復計算的問題。循環(huán)結(jié)構(gòu)來處理重復計算的問題。對于上述問題可以用以下程序:對于上述問題可以用以下程序:for(i=0;i=

3、3600;i+) x=i*3.14159/1800.0; y=sin(x); printf(“y=%f”,y); 顯然,這段程序簡潔易懂。顯然,這段程序簡潔易懂。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh64.2 for4.2 for循環(huán)循環(huán)for循環(huán)通過循環(huán)通過for語句實現(xiàn)。語句實現(xiàn)。for語句的一般格式為:語句的一般格式為: for(表達式表達式1;表達式;表達式2;表達式;表達式3)語句語句 表達式表達式1用于循環(huán)賦初始值,它只能執(zhí)行一次;用于循環(huán)賦初始值,它只能執(zhí)行一次; 表達式表達式2是循環(huán)條件;是循環(huán)條件; 表達式表達式3用于對循環(huán)條件的修改,以使循環(huán)能趨于結(jié)束。用于對循環(huán)條件

4、的修改,以使循環(huán)能趨于結(jié)束。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh7 執(zhí)行過程:執(zhí)行過程:執(zhí)行表達式1計算表達式2并判斷循 環(huán) 體 執(zhí)行表達式3=0非非02008-9-26程序設(shè)計基礎(chǔ)(C語言)wh8例如例如: :求從求從1 1加到加到100100的程序。的程序。程序如下:程序如下:main() int s,i; s=0; for(i=1;i=100;i+) s=s+i; printf(sum=%d,s); 循環(huán)體!循環(huán)體!結(jié)果:結(jié)果:sum=50502008-9-26程序設(shè)計基礎(chǔ)(C語言)wh9forfor語句語句-使用要點使用要點1、for語句中的表達式語句中的表達式1可以省略可以省

5、略,但在但在for循環(huán)之前循環(huán)之前 應(yīng)給循環(huán)應(yīng)給循環(huán)變量賦值變量賦值. 例如例如:i=1;for(;i=100;i+) sum=sum+i;2、表達式、表達式2也可以省略也可以省略,但循環(huán)將陷入死循環(huán)但循環(huán)將陷入死循環(huán). 例如例如:for(i=1;i+) sum=sum+i;3、表達式、表達式3也可以省略也可以省略,但應(yīng)在循環(huán)體中增加使循環(huán)變量值改但應(yīng)在循環(huán)體中增加使循環(huán)變量值改變的語句變的語句. 例如例如:for(sum=0,i=0;i=100;) sum=sum+i; i+;2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh104、表達式、表達式1和表達式和表達式3同時省略也允許同時省略也允許,

6、 例如例如:i=1;sum=0; for(;i=100;) sum=sum+i; i+; 這是完全與這是完全與while循環(huán)等同循環(huán)等同.5、三個表達式都可以省略、三個表達式都可以省略,但但“;”不能省略。不能省略。 for(;) sum=sum+i; 循環(huán)將無休止的執(zhí)行下去循環(huán)將無休止的執(zhí)行下去forfor語句語句-使用要點使用要點2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh11forfor語句語句-使用要點使用要點6、表達式、表達式1中的表達式可以是循環(huán)變量的賦初值的表達式中的表達式可以是循環(huán)變量的賦初值的表達式,也也可是與賦初值根本無關(guān)的其他表達式可是與賦初值根本無關(guān)的其他表達式,或者兩

7、者兼而有之或者兩者兼而有之.例如例如:for(sum=0,i=1;i=100;i+) sum=sum+i; 表達式表達式3也可以出現(xiàn)同樣的情況也可以出現(xiàn)同樣的情況,例如例如: for(sum=0,i=1;i=100;sum=sum+i,i+);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh127、表達式、表達式2一般清況下是關(guān)系表達式或邏輯一般清況下是關(guān)系表達式或邏輯表達式表達式,也可以是其他表達式也可以是其他表達式, 例如例如: for(;(c=getchar()!=n;printf(“%c”,c); 若輸入若輸入:cauc 輸出為輸出為cauc, 不是輸出不是輸出ccaauucc.forfo

8、r語句語句-使用要點使用要點2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh13 例例 求求Fibonacci數(shù)列數(shù)列1,1,2,3,5,8 的前的前30個數(shù)個數(shù)F1=1 F2=1 Fn=Fn-1+Fn-22=1+1 3=1+25=2+3 8=3+5在一次循環(huán)中計算兩項,遞推公式為:在一次循環(huán)中計算兩項,遞推公式為:F1=1 F2=1 (初值)(初值)F1=F1+F2F2=F2+F12008-9-26程序設(shè)計基礎(chǔ)(C語言)wh14 main() long int f1,f2; int i,n printf(“Input n:”); scanf(“%d”,&n); f1=f2=1; for (i=1

9、;i=n;i+) printf(“%ldt%ldn”,f1,f2); f1=f1+f2; f2=f2+f1; 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh15forfor語句語句-范例范例 #include void main(void ) int i,n; long fact=1; printf(please input n:); scanf(%d,&n); for(i=1;i=n;i+) fact*=i; printf(%d!=%ld,n,fact);例例: :求求n!n!2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh16forfor語句例語句例2 2: 求一個等差數(shù)列前求一個等差數(shù)列前n項

10、的和:項的和: ai+1-ai=d (i=1,2,3)分析:分析:1 輸入輸入n、d和等差數(shù)列的第一個數(shù)和等差數(shù)列的第一個數(shù)a的取值。的取值。 2 sum 、i的初值置的初值置0 3 a+sumsum 4 計算數(shù)列中下一個數(shù)的取值計算數(shù)列中下一個數(shù)的取值 a+da 5 i+1i 6 重復重復3、4、5步直到步直到i大于大于n 7 輸出結(jié)果輸出結(jié)果nforfor語句語句-范例范例2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh17#include void main(void) int a,d,n,i; int ai,sum=0; printf(“input a=?td=?tn=?n”); scan

11、f(“%d%d%d”,&a,&d,&n); ai=a; for(i=1;i=n;i+) sum+=ai; ai+=d; printf(“sum=%dn”,sum);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh18 for語句的特點:語句的特點:1、使用了三個表達式、使用了三個表達式2、循環(huán)控制變量可以在循環(huán)體內(nèi)使用,也可以不使、循環(huán)控制變量可以在循環(huán)體內(nèi)使用,也可以不使用,僅用來控制循環(huán)次數(shù)用,僅用來控制循環(huán)次數(shù)3、從正常出口離開循環(huán)時,循環(huán)控制變量會超過終、從正常出口離開循環(huán)時,循環(huán)控制變量會超過終值值2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh19forfor語句語句練習練習練習練習:求求

12、 (即求(即求1+2!+3!+4!+20?。?。?。?201!nn2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh204.3 while4.3 while循環(huán)循環(huán)當型循環(huán)當型循環(huán)while循環(huán)通過循環(huán)通過while語句實現(xiàn)。語句實現(xiàn)。while語句的一般格式為:語句的一般格式為: while(表達式表達式)語句語句2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh21while語句的執(zhí)行過程為:語句的執(zhí)行過程為: (1)計算并判斷表達式的值。若值為計算并判斷表達式的值。若值為0,則結(jié)束循環(huán),退出,則結(jié)束循環(huán),退出while語句;若值為非語句;若值為非0,則執(zhí)行循環(huán)體。,則執(zhí)行循環(huán)體。 (2)轉(zhuǎn)步驟轉(zhuǎn)步驟

13、(1)。whilewhile語句的執(zhí)行過程語句的執(zhí)行過程2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh22 執(zhí)行過程:執(zhí)行過程: 計算表達式并判斷循 環(huán) 體=0非非02008-9-26程序設(shè)計基礎(chǔ)(C語言)wh23 #include void main(void) int a = 1, sum = 0; while(a = 100) sum += a; a+; printf(%d, sum); whilewhile語句語句-范例范例 100例如例如:求求 n n=1注意注意“邊界值邊界值”的選擇的選擇!應(yīng)有使循環(huán)趨于結(jié)應(yīng)有使循環(huán)趨于結(jié)束的語句!束的語句!結(jié)果結(jié)果:Sum=50502008-9-2

14、6程序設(shè)計基礎(chǔ)(C語言)wh24例:統(tǒng)計從鍵盤輸入的一行字符的個數(shù)。例:統(tǒng)計從鍵盤輸入的一行字符的個數(shù)。#include void main(void) int num=0; printf(請輸入一行字符請輸入一行字符:); while( getchar( ) !=n) num+; printf(共輸入了共輸入了%d個字符!個字符!,num);whilewhile語句語句-范例范例2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh25whilewhile語句語句-范例范例例例:個位數(shù)是個位數(shù)是6,且能被,且能被3整除的整除的5位數(shù)共有多少個?位數(shù)共有多少個?#include void main(vo

15、id ) long int n=10006; int count=0; while(n=99999) if(n%3=0) count+; n+=10; printf(“count=%dn”,count); 練習:能被練習:能被3整整除的除的3位偶數(shù)共位偶數(shù)共有多少個?有多少個?2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh26 例例 利用輾轉(zhuǎn)相除法,求兩個正整數(shù)的利用輾轉(zhuǎn)相除法,求兩個正整數(shù)的 最大公約數(shù)最大公約數(shù)算法:算法: 1)若)若J=0,則,則I為最大公約數(shù)為最大公約數(shù) 2)若)若J不為不為0 將將I除以除以J,余數(shù)為,余數(shù)為K I=J;J=K 轉(zhuǎn)轉(zhuǎn)1)2008-9-26程序設(shè)計基礎(chǔ)(C

16、語言)wh27 main() int i,j,temp; printf(“Enter 2 integers:”); scanf(“%d%d”,&i,&j); while(j) temp=i%j; i=j; j=temp; printf(“Gcd=%dn”,i); 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh281.圓括號中的表達式可以是任意表達式,它僅用來測試表達圓括號中的表達式可以是任意表達式,它僅用來測試表達式的結(jié)果值是零值還是非零值,用以決定循環(huán)進行的條件,式的結(jié)果值是零值還是非零值,用以決定循環(huán)進行的條件,稱為稱為“判終表達式判終表達式”,一般是關(guān)系表達式或邏輯表達式,一般是關(guān)系表達式

17、或邏輯表達式,與條件語句一樣可進行如下簡化:與條件語句一樣可進行如下簡化: while(x != 0) while(x) while(x = 0) while(!x) WhileWhile語句語句-使用要點(使用要點(當型循環(huán)當型循環(huán))2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh292.當判終表達式為非零常量時,這樣的當判終表達式為非零常量時,這樣的while語句為無窮循環(huán)語句為無窮循環(huán)語句,如:語句,如: while(1) 語句語句; / 無窮循環(huán)語句無窮循環(huán)語句3. while語句的循環(huán)體通常是一個復合語句,也可以是簡單語句的循環(huán)體通常是一個復合語句,也可以是簡單語句,甚至可以是一個空語句

18、。語句,甚至可以是一個空語句。4.在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句,以避免在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句,以避免“死循死循環(huán)環(huán)”。 WhileWhile語句語句-使用要點使用要點2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh304.4 do-while4.4 do-while循環(huán)循環(huán)直到型循環(huán)直到型循環(huán)do-while循環(huán)通過循環(huán)通過do-while語句實現(xiàn)。語句實現(xiàn)。do-while語句的一般格式為:語句的一般格式為: do 語句語句 while(表達式表達式);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh31do-while語句的執(zhí)行過程為:語句的執(zhí)行過程為: (1)執(zhí)行循環(huán)體語句。執(zhí)

19、行循環(huán)體語句。 (2)計算并判斷表達式的值。若值為計算并判斷表達式的值。若值為0,則結(jié)束循環(huán),退,則結(jié)束循環(huán),退出出while語句;若值為非語句;若值為非0,則轉(zhuǎn)步驟,則轉(zhuǎn)步驟 (1)。do-whiledo-while語句的執(zhí)行過程語句的執(zhí)行過程2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh32 執(zhí)行過程:執(zhí)行過程: 計算表達式并判斷循 環(huán) 體=0非非02008-9-26程序設(shè)計基礎(chǔ)(C語言)wh33#include void main(void) int i,sum=0; i=1; dosum=sum+i; i+; while(i=100); printf(“%d”,sum);do-while

20、do-while語句語句-范例范例 100例如例如:求求 n n=1無論表達式的值是多無論表達式的值是多少,循環(huán)體至少執(zhí)行少,循環(huán)體至少執(zhí)行一次!一次!結(jié)果結(jié)果:Sum=50502008-9-26程序設(shè)計基礎(chǔ)(C語言)wh34例例:個位數(shù)是個位數(shù)是6,且能被,且能被3整除的整除的5位數(shù)共有多少個?位數(shù)共有多少個?#include void main( ) long int n=10006; int count=0; do if(n%3=0) count+; n+=10; while(n=99999); printf(“count=%dn”,count); do-whiledo-while語句語

21、句-范例范例練習:個位數(shù)練習:個位數(shù)是奇數(shù),且能是奇數(shù),且能被被7整除的整除的4位位數(shù)共有多少個?數(shù)共有多少個?2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh35do-whiledo-while語句與語句與whilewhile語句的本質(zhì)區(qū)別語句的本質(zhì)區(qū)別while語句是先計算并判斷表達式的值。若其值為非語句是先計算并判斷表達式的值。若其值為非 0,則,則執(zhí)行循環(huán)體;若其值為執(zhí)行循環(huán)體;若其值為0,則退出循環(huán)。,則退出循環(huán)。do-while語句則首先執(zhí)行循環(huán)體,然后再計算并判斷表語句則首先執(zhí)行循環(huán)體,然后再計算并判斷表 達達式的值。因此,式的值。因此,do-while語句至少要執(zhí)行一次循環(huán)體。語句

22、至少要執(zhí)行一次循環(huán)體。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh361.與與while語句類似,判終表達式可以是任意表達式,它僅用來測語句類似,判終表達式可以是任意表達式,它僅用來測試表達式的值是零值還是非零值,用以決定循環(huán)進行的條件試表達式的值是零值還是非零值,用以決定循環(huán)進行的條件. 2.do-while語句的循環(huán)體既可以是一個復合語句,也可以是一個語句的循環(huán)體既可以是一個復合語句,也可以是一個簡單語句。但即使循環(huán)體是一個簡單語句,包圍它的一對大括簡單語句。但即使循環(huán)體是一個簡單語句,包圍它的一對大括號也不能省略。號也不能省略。do-whiledo-while語句語句-使用要點使用要點2

23、008-9-26程序設(shè)計基礎(chǔ)(C語言)wh374.5 4.5 跳轉(zhuǎn)語句跳轉(zhuǎn)語句4.5.1 continue4.5.1 continue語句語句continue語句用于提前結(jié)束循環(huán)中的一輪循環(huán)。當程語句用于提前結(jié)束循環(huán)中的一輪循環(huán)。當程序執(zhí)行到序執(zhí)行到continue語句時,就跳過循環(huán)中后面還未語句時,就跳過循環(huán)中后面還未執(zhí)行的語句,回到循環(huán)的起始處,繼續(xù)進行下一輪執(zhí)行的語句,回到循環(huán)的起始處,繼續(xù)進行下一輪的循環(huán)。的循環(huán)。continue語句常與語句常與if 語句聯(lián)合起來使用,以便在滿足語句聯(lián)合起來使用,以便在滿足一定條件時提前結(jié)束本輪循環(huán)。一定條件時提前結(jié)束本輪循環(huán)。功能功能:結(jié)束本次循環(huán)結(jié)

24、束本次循環(huán),接著判定下一次是否接著判定下一次是否 執(zhí)行循環(huán)。執(zhí)行循環(huán)。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh38continuecontinue語句語句-范例范例1 1例如,對除例如,對除5 5的倍數(shù)以外的的倍數(shù)以外的11001100的數(shù)求和。的數(shù)求和。s=0;for(i=1;i=100;i+) if(!(i%5) continue; s+=i;printf(SUM=%dn,s);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh39例:把例:把100200之間的不能被之間的不能被3整除的數(shù)輸出整除的數(shù)輸出.#include void main(void) int n; for(n=100;n

25、=200;n+) if (n%3= =0) continue; printf(“%d”,n); continuecontinue語句語句-范例范例2 22008-9-26程序設(shè)計基礎(chǔ)(C語言)wh404.5.2 break4.5.2 break語句語句 ISO/ANSI C+標準中規(guī)定的跳轉(zhuǎn)語句有標準中規(guī)定的跳轉(zhuǎn)語句有 break語句、語句、continue語句、語句、return語句和語句和goto語句等。語句等。return語句將在語句將在第第6章介紹。章介紹。 1. break語句的功能:用于從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)語句的功能:用于從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán)。束循環(huán)。2.

26、使用要點:使用要點:break只能用在循環(huán)語句和只能用在循環(huán)語句和switch語句中語句中.2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh41例例 如如 此循環(huán)本是無限循環(huán),因加上了此循環(huán)本是無限循環(huán),因加上了break語句,使程序在輸入字符常量語句,使程序在輸入字符常量!時就終止循環(huán)。時就終止循環(huán)。for(;) scanf(%c,&ch); if(ch=!) break; else printf(%c,ch);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh42for(r=1;r100) break; printf(“%f”,area); breakbreak語句語句-范例范例1 1例例:計算計算

27、r=1到到r=10的的圓面積圓面積,當面積大于當面積大于100時結(jié)束循環(huán)時結(jié)束循環(huán).2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh43breakbreak語句語句-范例范例2 2Break語句例語句例2: 某銀行利息某銀行利息2.8%(以復利計)。假設(shè)某儲戶存以復利計)。假設(shè)某儲戶存入本金入本金8000元,當滿足以下條件之一,儲戶從銀行將錢取元,當滿足以下條件之一,儲戶從銀行將錢取出。出。 (1)儲蓄滿)儲蓄滿10年年 (2)連本帶息超過)連本帶息超過10000元元 編程求儲戶會在第幾年將錢取出,取出時連編程求儲戶會在第幾年將錢取出,取出時連本帶息是多少?本帶息是多少?2008-9-26程序設(shè)計

28、基礎(chǔ)(C語言)wh44#include void main( ) int year; float money=8000; for(year=1;year10000) break; printf(“%d year %fn”,year,money);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh45continuecontinue與與breakbreak的比較的比較continue與與break的區(qū)別的區(qū)別:continue只結(jié)束本次循環(huán)只結(jié)束本次循環(huán),而不是終止整個而不是終止整個循環(huán)。而循環(huán)。而break終止本層循環(huán),不再會去判終止本層循環(huán),不再會去判斷執(zhí)行循環(huán)體的條件是否成立。斷執(zhí)行循環(huán)體的條件

29、是否成立。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh462008-9-26程序設(shè)計基礎(chǔ)(C語言)wh47 4.5.3 goto4.5.3 goto語句語句1、一般形式為、一般形式為: goto 語句標號語句標號;2、例:、例: 100 #include 求求 n void main( ) n=1 int i,sum=0; i=1;運行結(jié)果為運行結(jié)果為:5050 loop :if (i=100) sum=sum+i; i+; goto loop; printf(“%d”,sum);3、說明:目前、說明:目前goto語句很少使用語句很少使用,過多的使用過多的使用goto語句會降低語句會降低程序的

30、可讀性。程序的可讀性。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh48注意:注意:goto語句對結(jié)構(gòu)程序設(shè)計有影響。它將使程語句對結(jié)構(gòu)程序設(shè)計有影響。它將使程序的結(jié)構(gòu)不清晰。應(yīng)盡可能用序的結(jié)構(gòu)不清晰。應(yīng)盡可能用break和和continue語句代替語句代替goto 不能用不能用goto語句從循環(huán)的外層跳到循環(huán)的內(nèi)語句從循環(huán)的外層跳到循環(huán)的內(nèi)層,否則會導致程序的混亂。層,否則會導致程序的混亂。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh49gotogoto語句的舉例:語句的舉例:main()int x,y,z;for(x=1;x=32;x+)for(y=1;y=48;y+)z=100-x-y;i

31、f(z%3=0)&(3*x+2*y+z/3=100)printf(“hen=%d,cock=%d,chicken=%dn”,x,y,z);goto laber; laber: ;結(jié)果:結(jié)果:hen=5 cock=32 chicken=63goto語句語句2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh504.6 4.6 多重循環(huán)多重循環(huán)多重循環(huán)多重循環(huán): 嵌套多層循環(huán)結(jié)構(gòu)的循環(huán)。嵌套多層循環(huán)結(jié)構(gòu)的循環(huán)。外循環(huán):外循環(huán): 處于外層的循環(huán)稱為外循環(huán)。處于外層的循環(huán)稱為外循環(huán)。內(nèi)循環(huán):內(nèi)循環(huán): 處于內(nèi)層的循環(huán)稱為內(nèi)循環(huán)。處于內(nèi)層的循環(huán)稱為內(nèi)循環(huán)。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh5112123

32、4567891011多重循環(huán)的等多重循環(huán)的等效效2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh52循環(huán)語句嵌套循環(huán)語句嵌套#include void main(void) int i,j;for(i=1;i=3;i+)for(j=1;j=8;j+)putchar(*);printf(n);例例 輸出圖形輸出圖形 * * *2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh53循環(huán)語句嵌套循環(huán)語句嵌套例例: 編寫一個九九編寫一個九九乘法表的程序乘法表的程序A方式:方式: #include void main() int i,j;/*定義兩個下標變量定義兩個下標變量i和和j*/ for(i=1;i=9;i

33、+) for(j=1;j=9;j+) printf(%4d,i*j); printf(n); 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh54A A方式運行結(jié)果:方式運行結(jié)果: 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54

34、63 72 812008-9-26程序設(shè)計基礎(chǔ)(C語言)wh55循環(huán)語句嵌套循環(huán)語句嵌套例例: 編寫一個編寫一個九九乘法九九乘法表的程序表的程序方式方式B:#include stdio.hvoid main()int i,j;for(i=1;i10;i+) for(j=1;j10;j+) printf(%d*%d=%-4d,i,j,i*j); printf(n);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh56B B方式運行結(jié)果:方式運行結(jié)果:1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=92*1=2 2*2=4 2*3=6 2*4=8

35、 2*5=10 2*6=12 2*7=14 2*8=16 2*9=183*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=274*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=365*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=456*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=547*1=7 7*2=14 7*3=21 7*4=

36、28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=638*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=729*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=812008-9-26程序設(shè)計基礎(chǔ)(C語言)wh57循環(huán)語句嵌套循環(huán)語句嵌套例例: 編寫一個九九編寫一個九九乘法表的程序乘法表的程序C方式分析:九九方式分析:九九乘乘法表分法表分9行行,第第i行共行共i個小項。個小項。i*j i=1,2,9j=1,2,i#include void ma

37、in(void) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+)printf(“%d*%d=%-4d”,i,j,i*j); printf(“n”); 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh58C C方式運行結(jié)果:方式運行結(jié)果:1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*

38、6=42 7*7=498*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=812008-9-26程序設(shè)計基礎(chǔ)(C語言)wh59 例例 輸出下面圖案輸出下面圖案 ABCDE BCDE CDE DE E #include “stdio.h” main() int i; char ch; for(i=0;i5;i+) for(ch=A+i;chA+5;ch+) printf(“%c”,ch); printf(“n”); 2008

39、-9-26程序設(shè)計基礎(chǔ)(C語言)wh60多多重重循循環(huán)環(huán)舉舉例例 main() int x,y,z,flag=0; for(x=1;x=32;x+) for(y=1;y=i+1) if (l5) printf(“%dt”,n); l+; else printf(“%dn”,n); l=0; #include “math.h”main() int n,m,i,j,l=0; scanf(“%d”,&m); for (n=2;n=m;n+) i=sqrt(n); for (j=2;j=a&c=A&c=0&c=9) digit+;else other+;printf(字母數(shù):字母數(shù):%dn空格數(shù):空格

40、數(shù):%dn數(shù)字數(shù):數(shù)字數(shù):%dn其他字符數(shù):其他字符數(shù):%dn,letters,space,digit,other); 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh65應(yīng)用舉例應(yīng)用舉例應(yīng)用例應(yīng)用例2:假定小兔子一個月就可以長成大兔子,而大兔子每假定小兔子一個月就可以長成大兔子,而大兔子每個月都會生出一對小兔子。如果年初養(yǎng)了一對小兔子,問到個月都會生出一對小兔子。如果年初養(yǎng)了一對小兔子,問到年底時將有多少對兔子年底時將有多少對兔子? (當然得假設(shè)兔子沒有死亡而且嚴格當然得假設(shè)兔子沒有死亡而且嚴格按照上述規(guī)律長大與繁殖按照上述規(guī)律長大與繁殖) 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh66應(yīng)用舉

41、例應(yīng)用舉例兔子問題分析表兔子問題分析表1月月2月月3月月4月月 5月月 6月月 7月月 8月月 9月月10月月11月月12月月小小兔兔111235813213455大大兔兔1123581321345589合合計計1123581321345589144 2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh67應(yīng)用舉例應(yīng)用舉例 每一個月份的兔子總數(shù)與上一個月每一個月份的兔子總數(shù)與上一個月的數(shù)字有什么聯(lián)系?的數(shù)字有什么聯(lián)系?“兔子問題兔子問題”很容易列出一條遞推式而得到很容易列出一條遞推式而得到解決。假設(shè)第解決。假設(shè)第N個月的兔子數(shù)目是個月的兔子數(shù)目是F(N),我們有:我們有: Fibonacci數(shù)列滿足以

42、下遞推關(guān)系:數(shù)列滿足以下遞推關(guān)系: f(1)=1 f(2)=1 f(n)=f(n-1)+f(n-2)2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh68#include stdio.hvoid main() long f1=1,f2=1; int i; printf(按每月增長,兔子總對數(shù)組成的數(shù)列為:按每月增長,兔子總對數(shù)組成的數(shù)列為:n); for(i=1;i=20;i+) printf(%8Ld %8Ld,f1,f2);if(i%4=0)printf(n); f1=f1+f2;f2=f2+f1; printf(n);2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh69運行結(jié)果:運行結(jié)果:按每月增

43、長,兔子總對數(shù)組成的數(shù)列為: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 21783093524578 5702887 9227465 1493035224157817 3908816963245986 1023341552008-9-26程序設(shè)計基礎(chǔ)(C語言)wh70n 課堂練習:課堂練習:1 、有一堆零件(、有一堆零件(100200之間),如果分成之間),如

44、果分成4個零件一組個零件一組的若干組,則多兩個零件;若分成的若干組,則多兩個零件;若分成7個零件一組,則多個零件一組,則多3個個零件;若分成零件;若分成9個零件一組,則多個零件一組,則多5個零件。請編程求這堆個零件。請編程求這堆零件的總數(shù)。零件的總數(shù)。2、編程統(tǒng)計用數(shù)字、編程統(tǒng)計用數(shù)字09可以組成多少個沒有重復數(shù)字的可以組成多少個沒有重復數(shù)字的3位位偶數(shù)。偶數(shù)。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh71課堂練習:課堂練習:3、用、用100元人民幣換成元人民幣換成1元、元、2元、元、5元的所有兌換方案。元的所有兌換方案。4、從、從3個紅球、個紅球、5個白球、個白球、6個黑球中任意取出個黑球

45、中任意取出8個球,且其中個球,且其中必須有白球,輸出所有可能的方案。必須有白球,輸出所有可能的方案。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh72課堂練習:課堂練習:5、每個蘋果、每個蘋果0.8元,第一天買兩個蘋果;從第二天開始,每元,第一天買兩個蘋果;從第二天開始,每天買前一天的天買前一天的2倍,直至購買的蘋果個數(shù)達到不超過倍,直至購買的蘋果個數(shù)達到不超過100的最大值,編寫程序求每天平均花多少錢。的最大值,編寫程序求每天平均花多少錢。6、一個球從、一個球從100m高度自由落下,每次落地后反跳回原來高高度自由落下,每次落地后反跳回原來高度的一半,再落下。求它在第度的一半,再落下。求它在第1

46、0次落地時,共經(jīng)過多少米次落地時,共經(jīng)過多少米?第第10次反彈多高?次反彈多高?2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh73本章小結(jié)本章小結(jié) for語句是一個功能最強的循環(huán)語句。語句是一個功能最強的循環(huán)語句。for語句和語句和while語句是先判斷表達式后再執(zhí)行循環(huán)體的語句是先判斷表達式后再執(zhí)行循環(huán)體的循環(huán)語句。因此,有可能一次循環(huán)體也不執(zhí)行。循環(huán)語句。因此,有可能一次循環(huán)體也不執(zhí)行。do-while循環(huán)是先執(zhí)行循環(huán)體后再判斷表達式的循環(huán)語循環(huán)是先執(zhí)行循環(huán)體后再判斷表達式的循環(huán)語句,通常用它來完成必須句,通常用它來完成必須 至少執(zhí)行一次循環(huán)體的操作。至少執(zhí)行一次循環(huán)體的操作。2008-9-26程序設(shè)計基礎(chǔ)(C語言)wh74本章小結(jié)本章小結(jié) ( (續(xù))續(xù))在多重循環(huán)中,外循環(huán)變化慢,內(nèi)循環(huán)變化快,外循環(huán)一在多重循環(huán)中,外循環(huán)變化慢,內(nèi)循環(huán)變化快,外循環(huán)一次,內(nèi)循環(huán)就要循環(huán)幾次。次,內(nèi)循環(huán)就要循環(huán)幾次。break語句用于從內(nèi)循環(huán)跳到外循環(huán),使循環(huán)提前結(jié)束。但語句用于從內(nèi)循環(huán)跳到外循環(huán),使循環(huán)提前結(jié)束。但它只能跳一層循環(huán),不能跳多層循環(huán)。它只能跳一層循環(huán),不能跳多層循環(huán)。continue語句用于跳過其后的語句,使本輪循環(huán)提前結(jié)束。語句用于跳過其后的語句,使本輪循環(huán)提前結(jié)束。

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!