第6章循環(huán)結(jié)構(gòu)_第1頁(yè)
第6章循環(huán)結(jié)構(gòu)_第2頁(yè)
第6章循環(huán)結(jié)構(gòu)_第3頁(yè)
第6章循環(huán)結(jié)構(gòu)_第4頁(yè)
第6章循環(huán)結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、本章主要內(nèi)容本章主要內(nèi)容概述概述用用while語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)用用dowhile語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)用用for語(yǔ)句實(shí)現(xiàn)循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)循環(huán)的嵌套循環(huán)的嵌套幾種循環(huán)語(yǔ)句的比較幾種循環(huán)語(yǔ)句的比較break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句程序舉例程序舉例 第六章 循環(huán)控制6.1 概述 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu): 程序設(shè)計(jì)中程序設(shè)計(jì)中, 經(jīng)常需要重復(fù)相同的經(jīng)常需要重復(fù)相同的計(jì)算或處理過(guò)程。計(jì)算或處理過(guò)程。例如:全班有例如:全班有50個(gè)學(xué)生,統(tǒng)計(jì)各學(xué)生三個(gè)學(xué)生,統(tǒng)計(jì)各學(xué)生三 門(mén)課的平均成績(jī)。門(mén)課的平均成績(jī)。scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)

2、/3;printf(“aver=%7.2f”,aver); 輸入學(xué)生輸入學(xué)生1的三門(mén)課成績(jī),并計(jì)算平均值后輸出的三門(mén)課成績(jī),并計(jì)算平均值后輸出scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver); 輸入學(xué)生輸入學(xué)生2的三門(mén)課成績(jī),并計(jì)算平均值后輸出的三門(mén)課成績(jī),并計(jì)算平均值后輸出要對(duì)要對(duì)50個(gè)學(xué)生進(jìn)行相同操作個(gè)學(xué)生進(jìn)行相同操作重復(fù)重復(fù)50次次循環(huán)結(jié)構(gòu)兩大要素:循環(huán)結(jié)構(gòu)兩大要素:循環(huán)體循環(huán)體 可重復(fù)執(zhí)行的語(yǔ)句或語(yǔ)句組可重復(fù)執(zhí)行的語(yǔ)句或語(yǔ)句組循環(huán)條件循環(huán)條件 條件表達(dá)式,指出什么時(shí)候執(zhí)行循環(huán)體,條件表達(dá)式

3、,指出什么時(shí)候執(zhí)行循環(huán)體,什么時(shí)候結(jié)束循環(huán)。什么時(shí)候結(jié)束循環(huán)。循環(huán)體語(yǔ)句條件表達(dá)式循環(huán)體語(yǔ)句條件表達(dá)式真假while的后續(xù)語(yǔ)句1形式形式 : while(條件表達(dá)式)(條件表達(dá)式)循環(huán)體語(yǔ)句循環(huán)體語(yǔ)句 6.3 while語(yǔ)句語(yǔ)句例例0:用:用 while 語(yǔ)句實(shí)現(xiàn)在屏幕上輸出語(yǔ)句實(shí)現(xiàn)在屏幕上輸出10行行“i love programming!”。分析分析: 設(shè)計(jì)變量并賦初值設(shè)計(jì)變量并賦初值 用用int型變量型變量i表示行數(shù),初值為表示行數(shù),初值為1設(shè)計(jì)循環(huán)條件設(shè)計(jì)循環(huán)條件 i10設(shè)計(jì)循環(huán)體設(shè)計(jì)循環(huán)體 printf(“i love programming!n”); i+;用循環(huán)語(yǔ)句實(shí)現(xiàn)用循環(huán)語(yǔ)句

4、實(shí)現(xiàn)void main() int i; i=1; while(i=10) printf(“i love programming!n”); i+; 循環(huán)變量循環(huán)變量賦初值賦初值循環(huán)變量循環(huán)變量增值增值循環(huán)條件循環(huán)條件循環(huán)體循環(huán)體條件表達(dá)式條件表達(dá)式必須加括號(hào),括必須加括號(hào),括號(hào)后不能有;號(hào)后不能有;循環(huán)體包含多條語(yǔ)循環(huán)體包含多條語(yǔ)句時(shí),句時(shí), 不能少不能少例例1:用:用 while 語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn) 1+2+3+100分析分析: 設(shè)計(jì)變量并賦初值設(shè)計(jì)變量并賦初值 1. 用用int型變量型變量sum存放和,初值為存放和,初值為0 2. 用用int型變量型變量i表示累加變量,初值為表示累加變量,初

5、值為1設(shè)計(jì)循環(huán)體設(shè)計(jì)循環(huán)體 sum=sum+i; i+;設(shè)計(jì)循環(huán)條件設(shè)計(jì)循環(huán)條件 i100用循環(huán)語(yǔ)句實(shí)現(xiàn)用循環(huán)語(yǔ)句實(shí)現(xiàn)程序流程圖:程序流程圖:開(kāi)始初始化 sum=0; i=1;判斷:i=100 ?sum=sum+i;i=i+1;輸出 sum結(jié)束真假真sum=sum+i;i=i+1;判斷:i=100 ?#include void main() int i, sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循環(huán)結(jié)束后循環(huán)結(jié)束后,i的的值是多少?值是多少?101使用說(shuō)明:使用說(shuō)明:1) 在在while的循環(huán)體中一定要有使循環(huán)趨于結(jié)束的的循

6、環(huán)體中一定要有使循環(huán)趨于結(jié)束的語(yǔ)句;否則將形成語(yǔ)句;否則將形成死循環(huán)死循環(huán);2) 注意循環(huán)操作的范圍、花括號(hào)、分號(hào)的使用;注意循環(huán)操作的范圍、花括號(hào)、分號(hào)的使用;3) 注意給循環(huán)變量賦初值的位置及初值的正確性;注意給循環(huán)變量賦初值的位置及初值的正確性;#include void main( ) int sum=0, i=1; while (i=100) sum=sum+i; i+; printf(sum%dn,sum); 程序程序: i+; sum+=i;i=0;100例例 2求求1到到100之間的奇數(shù)之和,偶數(shù)之積之間的奇數(shù)之和,偶數(shù)之積 。sum=0 mul=1 i=100 i能整除能整除

7、2?yesnomul=mul*isum=sum+i輸出輸出sum, muli+;i=1main( ) double mul=1; int i=1, sum=0; while (i=100) if (i%2=0) mul=mul*i; else sum=sum+i; i+; printf(sum=%dn,sum); printf(mul=%en,mul); main( ) int i,k1,k2,k; i=1;k1=1;k2=2; while (i=5) k=k1+k2; k1=k2; k2=k; i+; printf(%5d,k); 例例 3讀程序練習(xí):讀程序練習(xí): 3 5 8 13 21 1

8、形式:形式:do 語(yǔ)句語(yǔ)句 while(表達(dá)式)(表達(dá)式); 6.4 do-while語(yǔ)句語(yǔ)句循環(huán)體語(yǔ)句條件表達(dá)式循環(huán)體語(yǔ)句條件表達(dá)式真假例例 1用用do_while 語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn) 1+2+3+100分析分析: 設(shè)計(jì)變量并賦初值設(shè)計(jì)變量并賦初值 1. 用用int型變量型變量sum存放和,初值為存放和,初值為0 2. 用用int型變量型變量i表示累加變量,初值為表示累加變量,初值為1設(shè)計(jì)循環(huán)體設(shè)計(jì)循環(huán)體 sum=sum+i; i+;設(shè)計(jì)循環(huán)條件設(shè)計(jì)循環(huán)條件 i100用循環(huán)語(yǔ)句實(shí)現(xiàn)用循環(huán)語(yǔ)句實(shí)現(xiàn)void main( ) int i,sum=0; i=1; do sum=sum+i; i+; w

9、hile (i=1e-3); printf(sum=%fn,sum); while循環(huán)與循環(huán)與do_while循環(huán)小結(jié)循環(huán)小結(jié):1. 循環(huán)體內(nèi)必須有使循環(huán)趨于終止的條件循環(huán)體內(nèi)必須有使循環(huán)趨于終止的條件 while (i=100) sum=sum+i; i+;do sum=sum+i; i+; while (i=100);2. 注意循環(huán)初值與循環(huán)條件注意循環(huán)初值與循環(huán)條件i=1;while (i=100) sum=sum+i; i+;i=0;while (i100) i+; sum=sum+i;3. do_while 循環(huán)的循環(huán)體至少執(zhí)行一循環(huán)的循環(huán)體至少執(zhí)行一 次次, while循環(huán)的循環(huán)體

10、可能一次循環(huán)的循環(huán)體可能一次 也不執(zhí)行。也不執(zhí)行。 4. 在循環(huán)體至少執(zhí)行一次的前提下,在循環(huán)體至少執(zhí)行一次的前提下, do_while與與while 循環(huán)等價(jià)。循環(huán)等價(jià)。 例例3: 求求 n! main( ) int i=1,n; double m=1; scanf(%d,&n); while(i=n) m=m*i; i+; printf(%10.0fn,m); printf(“i=%dn”,i); main( ) int i=1,n; double m=1; scanf(%d,&n); do m=m*i; i+; while(i=n); printf(%10.0fn,m); printf(

11、“i=%dn”,i); 1. 一般形式:一般形式: for (表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句 for 的循環(huán)體的循環(huán)體括號(hào)不可少括號(hào)不可少分號(hào)不可少分號(hào)不可少 6.5 for語(yǔ)句語(yǔ)句求表達(dá)式求表達(dá)式1判表達(dá)式判表達(dá)式2語(yǔ)句語(yǔ)句求表達(dá)式求表達(dá)式3for語(yǔ)句的下一語(yǔ)句的下一個(gè)語(yǔ)句個(gè)語(yǔ)句 真真,非非0假假,值為值為0for語(yǔ)句執(zhí)行過(guò)程示意for (表達(dá)式表達(dá)式1; 表達(dá)式表達(dá)式2; 表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句表達(dá)式表達(dá)式1只執(zhí)只執(zhí)行行1次;次;表達(dá)式表達(dá)式2、3和內(nèi)嵌語(yǔ)句執(zhí)和內(nèi)嵌語(yǔ)句執(zhí)行多次行多次通常:通常:表達(dá)式表達(dá)式1用于用于對(duì)循環(huán)變量賦初值對(duì)循環(huán)變量賦初值;表達(dá)

12、式表達(dá)式2給出給出循環(huán)條件循環(huán)條件; 表達(dá)式表達(dá)式3使使循環(huán)變量增值循環(huán)變量增值;循環(huán)類(lèi)型:循環(huán)類(lèi)型:當(dāng)型當(dāng)型for語(yǔ)句等價(jià)于下列語(yǔ)句:語(yǔ)句等價(jià)于下列語(yǔ)句:表達(dá)式表達(dá)式1;while (表達(dá)式(表達(dá)式2) 語(yǔ)句;語(yǔ)句; 表達(dá)式表達(dá)式3;例例:#include void main()int i, sum=0;for (i=1;i=100;i+) sum=sum+i;printf(“sum=%dn”,sum);例:例:for(i=0; i=10; i=i+2) printf(“%3d”, i); printf(“ni=%d”, i); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:0 2 4 6 8 10 i=12例:例:

13、for(i=10; i; i-) printf(“%d,”, i); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:10,9,8,7,6,5,4,3,2,1,例:例:for(i=1, j=6; ij; i+, j-) printf(“%d*%d=%dn”, i, j, i*j);運(yùn)行結(jié)果:運(yùn)行結(jié)果:1*6=6 2*5=10 3*4=12 3. 說(shuō)明說(shuō)明 : 1)表達(dá)式)表達(dá)式1可省略,但分號(hào)不能省可省略,但分號(hào)不能省 ;如如 :int i=1,sum=0; for (;i=100;i+) sum=sum+i; 2)若表達(dá)式)若表達(dá)式2省略,循環(huán)條件永遠(yuǎn)為真省略,循環(huán)條件永遠(yuǎn)為真 ;如如: for(i=1; ;i+)pr

14、intf(“%d,”,i); 死循環(huán)死循環(huán)3)表達(dá)式)表達(dá)式3也可省略,但應(yīng)設(shè)法保證循環(huán)正常結(jié)束也可省略,但應(yīng)設(shè)法保證循環(huán)正常結(jié)束 ;如如 : for (i=1;i=100;) sum=sum+i; i+; 4)可只給循環(huán)條件)可只給循環(huán)條件;i=1; for (;i=100;) sum=sum+i; i+; 5)三個(gè)表達(dá)式都可省)三個(gè)表達(dá)式都可省 ; for (;) 相當(dāng)于相當(dāng)于 while (1) 6)表達(dá)式)表達(dá)式1和表達(dá)式和表達(dá)式3可以是逗號(hào)表達(dá)式可以是逗號(hào)表達(dá)式 ;如如 : for (i=1,sum=0;i=100;i+) sum=sum+i;7)表達(dá)式)表達(dá)式2一般為關(guān)系表達(dá)式或邏

15、輯表達(dá)式,但一般為關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零非零就執(zhí)行循環(huán)體就執(zhí)行循環(huán)體 。 如如: for (;(c=getchar( )!=n;) printf(%c,c);注注: 盡量避免用盡量避免用實(shí)型變量實(shí)型變量控制循環(huán)次數(shù)。控制循環(huán)次數(shù)。在循環(huán)體內(nèi)盡量避免改變循環(huán)變量的值在循環(huán)體內(nèi)盡量避免改變循環(huán)變量的值, 否否則將難以預(yù)知循環(huán)次數(shù)。則將難以預(yù)知循環(huán)次數(shù)。例:例:void main( ) int i; for(i=1;i=20;i+) i=i+5; printf(%5d,i); printf(n);運(yùn)行結(jié)果為:

16、運(yùn)行結(jié)果為: 6 12 18 24修改了循環(huán)變量修改了循環(huán)變量 概念概念 :一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu):一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu) 。 6.6 循環(huán)的嵌套循環(huán)的嵌套例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3) while(e1); while(e); while(e); 外循環(huán)外循環(huán) 內(nèi)循環(huán)內(nèi)循環(huán) 外循環(huán)外循環(huán) 內(nèi)循環(huán)內(nèi)循環(huán)1 內(nèi)循環(huán)內(nèi)循環(huán)2三重循環(huán)三重循環(huán)錯(cuò)誤的循環(huán)交叉形式:錯(cuò)誤的循環(huán)交叉形式: 說(shuō)明說(shuō)明 :1)三種循環(huán)可以互相嵌套)三種循環(huán)可以互相嵌套 2)嵌套可以是多層的)嵌套可以是多層的 * * *

17、 * * * * * * * * * * * * * * * * * * * * * *main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=5;j+) printf (*); printf(n); 1. 四種循環(huán)一般可互相代替四種循環(huán)一般可互相代替 3. while和和do-while循環(huán)的循環(huán)體中應(yīng)包括使循循環(huán)的循環(huán)體中應(yīng)包括使循環(huán)趨于結(jié)束的語(yǔ)句。環(huán)趨于結(jié)束的語(yǔ)句。4. 6. while和和for循環(huán)是當(dāng)型循環(huán)循環(huán)是當(dāng)型循環(huán), do-while循環(huán)是直到型循環(huán)循環(huán)是直到型循環(huán) 6.7 幾種循環(huán)的比較幾種循環(huán)的比較一、一、break語(yǔ)句語(yǔ)句 作用作用 :

18、1) 從循環(huán)體內(nèi)跳出,即提前結(jié)束循環(huán)從循環(huán)體內(nèi)跳出,即提前結(jié)束循環(huán) ,接著,接著執(zhí)行循環(huán)下面的語(yǔ)句執(zhí)行循環(huán)下面的語(yǔ)句 ; 2) break語(yǔ)句語(yǔ)句只能只能 用于用于循環(huán)語(yǔ)句和循環(huán)語(yǔ)句和 switch 語(yǔ)語(yǔ)句句 。6.8 break語(yǔ)句和語(yǔ)句和continue語(yǔ)句語(yǔ)句#include void main( )int r; float area; for(r=1; r100) break; printf(“r=%d,area=%-7.2fn”, r, area); printf(“r=%d”,r);計(jì)算半徑為計(jì)算半徑為1 1到到1010的的各圓面積,直到面各圓面積,直到面積大于積大于100100為

19、止。為止。 r= 6 注意:注意: 在循環(huán)中使用了在循環(huán)中使用了break語(yǔ)句后,循環(huán)語(yǔ)句的結(jié)束可語(yǔ)句后,循環(huán)語(yǔ)句的結(jié)束可能有兩種:能有兩種:1. 正常結(jié)束(正常出口);由于循環(huán)條件表達(dá)式為假正常結(jié)束(正常出口);由于循環(huán)條件表達(dá)式為假2. 非正常結(jié)束(異常出口):由非正常結(jié)束(異常出口):由break語(yǔ)句引起。語(yǔ)句引起。使用說(shuō)明:使用說(shuō)明:1) 內(nèi)循環(huán)中的內(nèi)循環(huán)中的break僅跳出內(nèi)循環(huán)結(jié)構(gòu);僅跳出內(nèi)循環(huán)結(jié)構(gòu); if(e) break;2) 被循環(huán)語(yǔ)句嵌套的被循環(huán)語(yǔ)句嵌套的switch中出現(xiàn)的中出現(xiàn)的break,僅,僅跳出跳出switch;switch(e) break; 二、二、conti

20、nue 語(yǔ)句語(yǔ)句作用作用 :結(jié)束:結(jié)束本次本次循環(huán),即跳過(guò)循環(huán)體中語(yǔ)句中下面尚循環(huán),即跳過(guò)循環(huán)體中語(yǔ)句中下面尚未執(zhí)行的語(yǔ)句,接著執(zhí)行下一次是否執(zhí)行循環(huán)的判定。未執(zhí)行的語(yǔ)句,接著執(zhí)行下一次是否執(zhí)行循環(huán)的判定。 for (n=100;n=200;n+) if (n%3= =0) continue; printf(“%d”,n); if (n%3!=0) printf(“%d”,n);例:for中用 continue 例:while中用continue for(e1; e2; e3 ) while( e1 ) if (e) continue; if(e) continue; 三、三、break語(yǔ)句和

21、語(yǔ)句和continue語(yǔ)句的區(qū)別是語(yǔ)句的區(qū)別是 : 1)continue 語(yǔ)句只結(jié)束語(yǔ)句只結(jié)束本次循環(huán)本次循環(huán),不終止整,不終止整個(gè)循環(huán)的執(zhí)行;個(gè)循環(huán)的執(zhí)行; 2)break 語(yǔ)句是語(yǔ)句是終止整個(gè)循環(huán)終止整個(gè)循環(huán)的執(zhí)行,不再的執(zhí)行,不再進(jìn)行條件判斷。進(jìn)行條件判斷。 例:例: 從鍵盤(pán)上任意輸入一個(gè)正整數(shù),判斷其是否為素?cái)?shù)。從鍵盤(pán)上任意輸入一個(gè)正整數(shù),判斷其是否為素?cái)?shù)。素?cái)?shù):除了素?cái)?shù):除了1和它本身之外沒(méi)有其他因子的數(shù)。換句和它本身之外沒(méi)有其他因子的數(shù)。換句話說(shuō)只要有因子(除了話說(shuō)只要有因子(除了1和它本身之外)則該數(shù)一定和它本身之外)則該數(shù)一定不是素?cái)?shù)不是素?cái)?shù)判斷判斷m是否素?cái)?shù):是否素?cái)?shù):(窮舉

22、法窮舉法) for(i=2;im-1void main( ) int m,i; scanf(%d,&m); for(i=2;im-1) printf(%d is a prime,m); else printf(%d is not a prime,m); 非正常出口非正常出口方法方法1main( ) int m, i, k=1; scanf(%d,&m); for(i=2;i=m-1;i+) if(m%i= =0) k=0;break; if(k) printf(%d is a prime,m); else printf(%d is not a prime,m);方法方法2標(biāo)志變量標(biāo)志變量例用公

23、式求例用公式求的近似值,直到最后一項(xiàng)的的近似值,直到最后一項(xiàng)的絕對(duì)值小于絕對(duì)值小于10-6為止為止 。 /41-1/3+1/5-1/7+算法分析:算法分析: 1. 循環(huán)累加循環(huán)累加 pi=pi+t; 2. 交替改變符號(hào)交替改變符號(hào) s= -s; 3. 每項(xiàng)分子為每項(xiàng)分子為 1 ,分母分母 n=n+2; 6.9 程序舉例程序舉例 #include void main( ) int s; float n,t,pi; t=1;pi=0;n=1;s=1; while (fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s*1.0/n; printf(pi=%10.6fn,4*

24、pi); 程序程序 :例例 求求fibonacci數(shù)列:數(shù)列:1,1,2,3,5,8,.的前的前40個(gè)數(shù)個(gè)數(shù) 。 f1 f2 1 1f1=f1+f2; f2=f2+f1; fi=fi-1+fi-2f12f23. void main( ) long int f1,f2; int i; f1=1; f2=1; for (i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if (i%2= =0) printf(n); f1=f1+f2; f2=f2+f1; 與此解題方法類(lèi)似的有與此解題方法類(lèi)似的有:(迭代法迭代法)1、編寫(xiě)求、編寫(xiě)求 20+21+22+23+263 的程

25、序的程序 。2、求、求1!+2!+3!+20!。3、有一個(gè)分?jǐn)?shù)序列、有一個(gè)分?jǐn)?shù)序列 2/1,3/2,5/3,8/5,13/8,21/13求出這個(gè)數(shù)列的前求出這個(gè)數(shù)列的前20項(xiàng)之和項(xiàng)之和4、求、求: sn=a+aa+aaa+aaaaaa,其中其中a是一是一個(gè)數(shù)字個(gè)數(shù)字,n表示表示a的位數(shù),的位數(shù),n要求由鍵盤(pán)輸入。要求由鍵盤(pán)輸入。等等。等等。void main( ) int i,j,m=0; for(j=100;j=200;j+) for(i=2;ij-1) printf(%5d,j); m+; if(m%10=0) printf(n); printf( m=%dn,m);例:求例:求10020

26、0之間的所有素?cái)?shù)及素?cái)?shù)的個(gè)數(shù)。之間的所有素?cái)?shù)及素?cái)?shù)的個(gè)數(shù)。輸出輸出10個(gè)素?cái)?shù)后換行個(gè)素?cái)?shù)后換行與此解題方法類(lèi)似的有與此解題方法類(lèi)似的有:(窮舉法、列舉法窮舉法、列舉法)1、輸出所有的水仙花數(shù)。、輸出所有的水仙花數(shù)。2、找出、找出11000之間的全部同構(gòu)數(shù)之間的全部同構(gòu)數(shù) 。一個(gè)數(shù)等于。一個(gè)數(shù)等于它的平方數(shù)的右端,就稱(chēng)為同構(gòu)數(shù)。如它的平方數(shù)的右端,就稱(chēng)為同構(gòu)數(shù)。如 :5的平方的平方是是25,25的平方是的平方是625。3、編程找出、編程找出1000之內(nèi)的所有完數(shù)。一個(gè)數(shù)恰好等之內(nèi)的所有完數(shù)。一個(gè)數(shù)恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為于它的因子之和,這個(gè)數(shù)就稱(chēng)為“完數(shù)完數(shù)”。例如:。例如:6的因子為

27、的因子為1,2,3,而,而6=1+2+3,因此,因此6是完數(shù)。是完數(shù)。同構(gòu)數(shù)同構(gòu)數(shù) : 一個(gè)數(shù)等于它的平方數(shù)的右端。一個(gè)數(shù)等于它的平方數(shù)的右端。 如如 :5的平方是的平方是25 25的平方是的平方是625 例例 :找出找出11000之間的全部同構(gòu)數(shù)之間的全部同構(gòu)數(shù) 。分析:分析:1. 用用i表示表示11000之間的數(shù)之間的數(shù) 2. 用用n表示表示i的位數(shù)的位數(shù) 3. 同構(gòu)數(shù)的條件同構(gòu)數(shù)的條件: i*i%(int)pow(10,n) = = im=i;n=0;do n+; m=m/10; while(m!=0); #include math.h main( ) int n,m; long i;

28、for(i=1;i=1000;i+) m=i;n=0; do n+; m=m/10; while(m!=0); if(i*i%(int)pow(10,n)=i) printf(%5ld,i); printf(n); 一個(gè)數(shù)恰好等于它的因子之和,這個(gè)數(shù)一個(gè)數(shù)恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為就稱(chēng)為“完數(shù)完數(shù)”。例如:例如:6的因子為的因子為1,2,3,而,而6=1+2+3,因,因此此6是完數(shù)。是完數(shù)。編程找出編程找出1000之內(nèi)的所有完數(shù),并按之內(nèi)的所有完數(shù),并按下面格式輸出其因子下面格式輸出其因子6 its factors are 1,2,3 例 main( ) int i,j,k; for

29、(i=2;i=1000;i+) k=0; for (j=1;j=i/2;j+) if (i%j=0) k=k+j; if (i=k) printf(“%d its factors are %d”,i,1); for (j=2;j=i/2;j+) if (i%j=0) printf(“,%d”,j); printf(“n”); 程序 :例:從鍵盤(pán)輸入字符直到輸入字符例:從鍵盤(pán)輸入字符直到輸入字符#為止,并統(tǒng)計(jì)為止,并統(tǒng)計(jì) 輸入字母的個(gè)數(shù)。輸入字母的個(gè)數(shù)。特點(diǎn):特點(diǎn):循環(huán)次數(shù)事先無(wú)法確定循環(huán)次數(shù)事先無(wú)法確定#include void main( ) char ch; int count=0; do

30、 ch=getchar( ); if(ch=a&ch=a&ch=z) count+; while(ch!=# ); printf(”count=%dn”, count); 例:從鍵盤(pán)輸入字符直到輸入字符例:從鍵盤(pán)輸入字符直到輸入字符#為止,并統(tǒng)計(jì)為止,并統(tǒng)計(jì) 輸入字母的個(gè)數(shù)。方法輸入字母的個(gè)數(shù)。方法2:#include void main( ) char ch; int count=0; while(1) ch=getchar( ); if(ch=a&ch=a&ch=z) count+; if(ch= =#) break; printf(”count=%dn”, count); 例例: 在屏幕

31、上輸出以下圖形。在屏幕上輸出以下圖形。 * * * *分析:(設(shè)分析:(設(shè)n=5n=5)第第1 1行:行: 4 4個(gè)空格個(gè)空格 1 1個(gè)個(gè)“* *” 換行換行符符 第第2 2行:行: 3 3個(gè)空格個(gè)空格 3 3個(gè)個(gè)“* *” 換行換行符符第第3 3行:行: 2 2個(gè)空格個(gè)空格 5 5個(gè)個(gè)“* *” 換行換行符符第第4 4行:行: 1 1個(gè)空格個(gè)空格 7 7個(gè)個(gè)“* *” 換行換行符符第第5 5行:行: 0 0個(gè)空格個(gè)空格 9 9個(gè)個(gè)“* *” 換行換行符符由此歸納出:第由此歸納出:第i i行的空格數(shù)行的空格數(shù)5-i5-i個(gè);個(gè); 第第i i行的行的“* *”數(shù)是數(shù)是2i-12i-1個(gè)。個(gè)。 v

32、oid main( ) int i, j; for(i=1;i=5;i+) for (j=1;j=5-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); 本章小結(jié) 本章介紹的內(nèi)容本章介紹的內(nèi)容 介紹了介紹了while、dowhile、for三種循環(huán)結(jié)構(gòu)三種循環(huán)結(jié)構(gòu)的使用和它們之間的區(qū)別,以及的使用和它們之間的區(qū)別,以及break、continue的用法的用法 要求達(dá)到的目標(biāo)要求達(dá)到的目標(biāo) 掌握掌握while、dowhile、for語(yǔ)句的用法語(yǔ)句的用法 會(huì)使用這三種結(jié)構(gòu)進(jìn)行循環(huán)程序設(shè)計(jì)會(huì)使用這三種結(jié)構(gòu)進(jìn)行循環(huán)程序設(shè)計(jì) 理解理解 b

33、reak 和和 continue在程序控制中的作用在程序控制中的作用圖形圖形 1:(法一):(法一)main( ) int i; for (i=1;i=5;i+) printf (“ * * * * *n”); * * * * * * * * * * * * * * * * * * * * * * * * *圖形圖形 1:(法二):(法二)main( ) int i; for (i=1;i=25;i+) if (i%5=0) printf (“ *n”); else printf (“ *”); * * * * * * * * * * * * * * * * * * * * * * * * *

34、圖形圖形 2:(法三):(法三)main( ) int i,j; for (i=1;i=5;i+) for ( j=1;j=i;j+) printf ( “ “); printf (“ * * * * *n”); * * * * * * * * * * * * * * * * * * * * * * * * *圖形圖形 2:(法三):(法三)main( ) int i,j; for (i=1;i=5;i+) for ( j=1;j5+i;j+) if (ji) printf ( “ “); else printf (“ *”); printf(“n”); * * * * * * * * * *

35、 * * * * * * * * * * * * * * *圖形圖形 3:main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=5-i:j+) printf ( “ “); for (j=1;j=5;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * * * * * * * * * * * * * *圖形圖形 4 :main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * 圖形圖形 4 :main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf (“ *”); printf(“n”); * * * * * * * * * * * * 圖形圖形 5:(法一):(法一)main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=5-i;j+) printf (“ “); for (j=1;j=i;j+) printf (“ *”); printf(“n”); * * * * * * * * * * *

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論