版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
能力教程(第五版)C語言程序設(shè)計(jì)第5章用循環(huán)結(jié)構(gòu)設(shè)計(jì)程序?qū)崿F(xiàn)重復(fù)操作5.1為什么使用循環(huán)5.3for語句實(shí)現(xiàn)5.2while語句與dowhile語句5.7循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例5.4幾種循環(huán)的比較5.6break和continue語句5.5多重循環(huán)(嵌套循環(huán))問題1:求1+2+3+…+100的和。問題2:求學(xué)生平均成績。(分?jǐn)?shù)相加后除以課數(shù))問題3:找出整數(shù)[1~1000]中能同時(shí)被3和7整除的數(shù)。
循環(huán)是有規(guī)律的重復(fù)操作。將復(fù)雜問題分解為簡單的操作過程,程序只對簡單過程描述,這些過程的多次重復(fù)就可完成對問題的求解。
if--goto循環(huán)
while循環(huán)
for循環(huán)
dowhile循環(huán)
先判斷后循環(huán)(當(dāng)型循環(huán))
先循環(huán)后判斷(直到型循環(huán))什么是循環(huán)?為什么要使用循環(huán)?一、循環(huán)問題5.1為什么使用循環(huán)循環(huán)變量的初始值
循環(huán)進(jìn)入條件循環(huán)體循環(huán)變量的增值循環(huán)的基本要素循環(huán)變量的初值滿足條件則執(zhí)行循環(huán)體重復(fù)執(zhí)行的語句循環(huán)變量的改變,進(jìn)一步測試條件二、循環(huán)結(jié)構(gòu)循環(huán)體N條件Y入口出口條件NY循環(huán)體區(qū)別?先循環(huán)后判斷先判斷后循環(huán)算法:采用循環(huán)功能實(shí)現(xiàn)
S0:p=0,i=1(循環(huán)初值)
S1:p=p+i,i=i+1(循環(huán)體)
S2:如果i小于或等于100,重復(fù)執(zhí)行步驟S1及S2;否則,算法結(jié)束(循環(huán)控制)。p中的值就是1+2+…+100的值。例:求1+2+3+…+100的和。打印p的值當(dāng)i≤100p=p+ii=i+1
p=0,i=15.2while語句與dowhile語句一、while循環(huán)1.格式:while(表達(dá)式)循環(huán)體2.功能:先判斷表達(dá)式的值,若為非零,重復(fù)執(zhí)行循環(huán)體語句,再判斷…直到表達(dá)式的值為零,退出循環(huán)體。即:測試---執(zhí)行--測試--執(zhí)行--while(條件){語句組}循環(huán)體N條件Y題目分析:sum=1+2+3+……+100變量設(shè)定:
sum
存放計(jì)算的中間結(jié)果和最后結(jié)果,
i
存放被加數(shù);算法分析:
1.開始:sum=0,i=1
2.如果滿足條件i<=100,則執(zhí)行3,否則轉(zhuǎn)5;3.反復(fù)累加,迭代式子:sum=sum+i;
被加數(shù)i的變化規(guī)律:
i=i+1;
4.轉(zhuǎn)2繼續(xù);5.結(jié)束循環(huán),輸出結(jié)果。例5.1用while語句求#include<stdio.h>main(){inti,sum;
sum=0;i=1;
while(i<=100){sum=sum+i; i=i+1; }printf(“sum=%d",sum);}循環(huán)初值循環(huán)條件循環(huán)體{累加迭代式子}程序如下:初始化sum=0;i=1;程序流程圖:開始循環(huán)次數(shù)
sumi
開始01求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始循環(huán)次數(shù)
sumi
第
0
次01求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假循環(huán)次數(shù)
sumi
第
1
次11求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
1
次12求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
1
次12求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
2
次12求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
2
次32求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
2
次33求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
3
次33求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
3
次63求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
3
次64求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
4
次64求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
4
次104求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第
4
次105求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第99次485199求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第99次495099求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第99次4950100求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第100次4950100求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第100次5050100求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;循環(huán)次數(shù)
sumi
第100次5050101求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真假i=i+1;求sum=1+2+3+……+100循環(huán)次數(shù)
sumi
第100次5050101判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出sum假循環(huán)次數(shù)
sumi
第100次5050101求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出sum結(jié)束假循環(huán)次數(shù)
sumi
第100次5050101求sum=1+2+3+……+100判斷:i<=100?初始化sum=0;i=1;程序流程圖:開始sum=sum+i;真i=i+1;輸出sum結(jié)束假循環(huán)次數(shù)
sumi
第100次5050101求sum=1+2+3+……+100**編程技巧**while語句實(shí)現(xiàn)循環(huán)的三個要點(diǎn):第一:初值的選擇——進(jìn)入循環(huán)前,起始值是什么?方法:為迭代變量賦初值。如s=0、1、a0(視具體情況而定)。累加計(jì)算初值為0,累乘運(yùn)算初值賦為1。位置:放于循環(huán)體外第二:確定循環(huán)的條件——變問題為規(guī)律性的重復(fù)操作循環(huán)的條件是什么?重復(fù)到何時(shí)結(jié)束?第三:確定循環(huán)體——找出反復(fù)執(zhí)行的是什么?迭代式子:如s=s+i;i=i+1;
位置:放于循環(huán)體內(nèi)main(){inti,sum;
sum=0;i=1;
while(i<=100){sum=sum+i;i=i+1; }printf(“sum=%d",sum);}3.說明:(1)當(dāng)循環(huán)體中語句多于一條時(shí),用{},否則,循環(huán)只對一個;起作用.(2)循環(huán)體內(nèi)部必須有實(shí)現(xiàn)對循環(huán)變量增值的語句,否則,易出現(xiàn)“死循環(huán)”.(3)條件表達(dá)式要有括號,后面不加分號.(4)注意條件的邊界值.例題:求1+2+3…+n<=100的最大的n。main(){inta,k;a=k=0;while(a<=100){
++k;a+=k;}printf(“1+2+3…..+%d=%d\n”,k-1,a-k);}main(){intnumber=0;while(number<=1){number++;printf(“%d\n”,number);}}結(jié)果:12number初值為0,條件為number<=11.number為0,滿足條件
number為0,然后自增為1輸出number12.number為1,滿足條件
number為1,然后自增為2輸出number23.number為2,不滿足條件
do語句
while(條件);1.格式:do循環(huán)體while(表達(dá)式);2.功能:先執(zhí)行循環(huán)體,再判斷表達(dá)式的值,若為非零,重復(fù)執(zhí)行循環(huán)體語句,再判斷…….直到表達(dá)式的值為零,退出循環(huán)體二、do-while循環(huán)條件即:執(zhí)行--測試---執(zhí)行--測試--條件NY循環(huán)體main(){inti,sum=0;i=1;
do {sum=sum+i; i++; }while(i<=100);
printf(“sum=%d”,sum); }例5.2用do_while語句實(shí)現(xiàn)1+2+3+···+100用while語句實(shí)現(xiàn)main(){inti,sum=0;i=1;
while(i<=100) {
sum=sum+i;i++; }printf("sum=%d",sum);}運(yùn)行結(jié)果:sum=5050用do-while語句實(shí)現(xiàn)main(){inti,sum=0;i=1;do{sum=sum+i;i++; }while(i<=100);printf("sum=%d",sum);}運(yùn)行結(jié)果:sum=50503、
while與dowhile的比較
main(){ints=0,x;scanf("%d",&x);
while(x<=10)
{s=s+x;x++;}printf("s=%d\n",s);}
main(){ints=0,x;scanf("%d",&x);
do
{s=s+x;x++;}
while(x<=10);printf("s=%d\n",s);}輸入:12輸出:s=12循環(huán)至少執(zhí)行一次循環(huán)沒有被執(zhí)行輸入:12輸出:s=05.3for語句實(shí)現(xiàn)循環(huán)計(jì)算表達(dá)式1初值;計(jì)算表達(dá)式2并判斷,當(dāng)表達(dá)式2為0時(shí)跳出循環(huán),當(dāng)表達(dá)式2非0,執(zhí)行循環(huán)體語句,計(jì)算表達(dá)式3增量;自動轉(zhuǎn)到第二步(計(jì)算表達(dá)式2)…...繼續(xù)執(zhí)行。
初值表達(dá)式1條件表達(dá)式2增量表達(dá)式3for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語句組}1.格式:2.功能:main(){intn,s;for(n=1;n<=100;n++)
s=s+n;printf(“%d\n”,s);}變量的增量循環(huán)體變量的初值循環(huán)條件
(1).表達(dá)式1,表達(dá)式2和表達(dá)式3均可缺省for(;n<100;n++)缺省e1,n應(yīng)在循環(huán)之前賦初值for(n=0;;n++)缺省e2,造成死循環(huán),不可使用!for(n=0;n<100;)缺省e3,n增量應(yīng)在循環(huán)體內(nèi)進(jìn)行for(;;)缺省e1,e2,e3死循環(huán)for(;n<100;)缺省e1,e3分號始終不能缺??!3.說明不可用
(2).表達(dá)式1和表達(dá)式3可是與初值、增量無關(guān)的逗號表達(dá)式for(s=0,n=1;n<=2;s=s+n,printf(“%d”,s))n++;for(s=0;n<2;s=s+n,n++){printf(“%d”,s);}求累加和n的初值在for之前完成增量在for之外完成main(){intn,s;for(n=1;n<=10;n+=2)printf("n=%d\n",n);}main(){intn,s;for(n=1;n<=10;n+=2);printf("n=%d\n",n);}以下程序的輸出結(jié)果輸出結(jié)果:n=11輸出結(jié)果:n=1n=3n=5n=7n=9無循環(huán)體
循環(huán)體;特點(diǎn):先判斷后循環(huán)printf("n=%d\n",n);例:求正整數(shù)n的階乘n!,其中n由用戶輸入。fact=1.0輸入變量n的值i=1i<=nfact=fact*ii++輸出fact的值程序如下:main(){floatfact=1.0;inti,n;scanf("%d",&n);for(i=1;i<=n;i++)fact=fact*i;printf("fac=%f",fact);}main(){floatr,s;inti;floatPi=3.14159;for(i=0,r=0.5;i<6;i++,r++){s=Pi*r*r;printf("\nr=%4.1f,s=%f",r,s);}}運(yùn)行結(jié)果:r=0.5,s=0.785398r=1.5,s=7.068578r=2.5,s=19.634937r=3.5,s=38.484578r=4.5,s=63.617199r=5.5,s=95.033104例:寫一個程序,計(jì)算半徑分別為0.5mm,1.5mm,2.5mm,3.5mm,4.5mm,5.5mm時(shí)圓的面積。main(){floatr,s;floatPi=3.14159;for(r=0.5;r<=5.5;r++){s=Pi*r*r;printf("\nr=%4.1f,s=%f",r,s);}}運(yùn)行結(jié)果:
r=0.5,s=0.785398r=1.5,s=7.068578r=2.5,s=19.634937r=3.5,s=38.484578r=4.5,s=63.617199r=5.5,s=95.033104goto語句的一般格式:
goto語句標(biāo)號;語句標(biāo)號一般用標(biāo)識符表示。例5.4利用GOTO語句求1到100的和。#include"stdio.h"voidmain(){inti=1,sum=0;/*循環(huán)的處置*/loop:if(i<=100)/*loop為語句標(biāo)號*/{sum=sum+i;i++;gotoloop;}printf("sum=%d",sum);}5.4幾種循環(huán)的比較1、C中的三種循環(huán)語句while(),do-while(),for()都可由表達(dá)式控制重復(fù)執(zhí)行一個循環(huán)體,都可以用來解決同一個問題,一般情況下,可以相互代替。2、三種循環(huán)各有特點(diǎn):1)當(dāng)循環(huán)次數(shù)及條件在程序運(yùn)行中才能確定時(shí),選用while()或do-while()語句兩者區(qū)別:while()
頂部測試,可能一次也不執(zhí)行
do-while()底部測試,至少執(zhí)行一次(2)如果初值,條件明顯,循環(huán)次數(shù)已給出,選用for()語句,功能最強(qiáng)。(3)出現(xiàn)“死循環(huán)”的幾種情況
for(;;)for(….;非零常數(shù)表達(dá)式;……)
while(非零常數(shù)表達(dá)式)
do..while(非零常數(shù)表達(dá)式)main(){intI=0,j=5;while(j<10){j=I*2;printf(“%d”,j);}結(jié)果為:?5.5多重循環(huán)(嵌套循環(huán))一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),即循環(huán)套循環(huán)——叫多重循環(huán)(“嵌套循環(huán)”)。按照循環(huán)的嵌套次數(shù),分別稱為二重循環(huán)、三重循環(huán)。一般將處于內(nèi)部的循環(huán)稱為內(nèi)循環(huán),處于外部的循環(huán)稱為外循環(huán)。一般單重循環(huán)只有一個循環(huán)變量,雙重循環(huán)具有兩個循環(huán)變量,多重循環(huán)有多個循環(huán)變量。一、循環(huán)嵌套的概念123456789---------------------------------12436948121651015202561218243036714212835424981624324048566491827364554637281行循環(huán)中包含了列循環(huán)。雙重循環(huán)二、嵌套結(jié)構(gòu)規(guī)則外循環(huán)內(nèi)循環(huán)交叉循環(huán)
外循環(huán)入口內(nèi)循環(huán)出口外循環(huán)出口內(nèi)循環(huán)出口三、循環(huán)嵌套的運(yùn)行過程外層循環(huán)取一個值,內(nèi)層循環(huán)取遍所有的值例:每只公雞5個錢,每只母雞3個錢,每3只小雞1個錢,用100個錢,買100只雞,問公雞、母雞和小雞各買幾只?分析定義變量x,y,z,表示公雞、母雞和小雞的只數(shù)intx,y,z;for(x=1;x<=20;x++)for(y=1;y<=33;y++)for(z=1;z<=300;z++){….}程序運(yùn)算多少次?x最多為20,y最多為33,當(dāng)x,y已確定時(shí),z的值為100-x-ymain(){intx,y,z;for(x=1;x<20;x++)for(y=1;y<=33;y++){z=100-x-y;if(5*x+3*y+z/3==100)printf(“%d,%d,%d\n”,x,y,z);}}共六組解:xyz320774187871380811811168312484所求的z不能被3整除如何解決?main(){inta,b,c,k=0;for(a=0;a<=100;a++)for(b=0;b<=50;b++)for(c=0;c<=20;c++){if(a+2*b+5*c==100)k++;}printf(“%d\n”,k);}將一元錢換成一分,二分和五分的硬幣,共有多少種換法?定義變量a,b,c定義變量k循環(huán)體計(jì)數(shù)器【例5.5】打印九九乘法表1×1=11×2=2……1×9=92×1=22×2=4……2×9=183×1=33×2=6……3×9=27………………9×1=99×2=18……9×9=81i=1當(dāng)i<=9j=1當(dāng)j<=9
輸出i*j的值
j++換行i++程序如下:main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=9;j++)printf("%d*%d=%2d",i,j,i*j);printf("\n");}}要求:從鍵盤輸入m值,輸出m行每行m個*號。例:輸入m=4,輸出的圖形如下:思路:1.輸入m;2.重復(fù)打印m行,每行打印m個*;****************1.輸入m;2.for(k=1;k<=m;k++)
打印一行中的m個*;細(xì)化:1.輸入m;2.for(k=1;k<=m;k++){打印m個*;換新行;}1.輸入m;2.for(k=1;k<=m;k++){for(j=1;j<=m;j++)printf(“*”);
printf(“\n”);}main(){intk,m,j;scanf(“%d”,&m);for(k=1;k<=m;k++){for(j=1;j<=m;j++)
printf(“*”);
printf(“\n”);}}【例5.6】用循環(huán)語句打印下列圖案:
*
**
***
****
*****#include"stdio.h"voidmain(){inti,j;for(i=1;i<=5;i++)/*控制行數(shù)*/{for(j=1;j<=i;j++)
/*控制輸出列"*"個數(shù)*/printf("*");printf("\n");
/*每輸出一行后換行*/}}【例5.7】用循環(huán)語句打印下列圖案:************************************i=1i<=6j=1j<=20-i
輸出空格字符j++j=1j<=2*i-1輸出“*”字符j++換行i++程序如下:main(){inti,j;for(i=1;i<=6;i++){for(j=1;j<=20-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");printf("\n");}}共81頁第59
頁⑴一個循環(huán)體必須完完整整地嵌套在另一個循環(huán)體內(nèi),不能出現(xiàn)交叉。⑷并列循環(huán)允許使用相同的循環(huán)變量,但嵌套循環(huán)不允許。關(guān)于嵌套循環(huán)的說明⑵多層循環(huán)的執(zhí)行順序是:最內(nèi)層先執(zhí)行,由內(nèi)向外逐層展開。⑶三種循環(huán)可以互相嵌套。5.6break和continue語句一、break語句break語句格式break;break語句的功能1.在switch語句中結(jié)束case子句,使控制轉(zhuǎn)到switch語句之外。2.在循環(huán)結(jié)構(gòu)中,break語句使流程轉(zhuǎn)向該循環(huán)體的外層繼續(xù)運(yùn)行。向外退出一層循環(huán)循環(huán)的退出【例5.8】從鍵盤上連續(xù)輸入字符,并統(tǒng)計(jì)其中大寫字母的個數(shù),直到輸入“換行”字符時(shí)結(jié)束。程序如下:#include"stdio.h"main(){
charch;intsum=0;while(1){ch=getchar();if(ch=='\n')break;if(ch>='A'&&ch<='Z')sum++;}printf("sum=%d",sum);}
關(guān)于break語句的說明
break語句只用于循環(huán)語句或switch語句中。在循環(huán)語句中,break常常和if語句一起使用,表示當(dāng)條件滿足時(shí),立即終止循環(huán)。注意break不是跳出if語句,而是跳出循環(huán)結(jié)構(gòu)。(2)循環(huán)語句可以嵌套使用,break語句只能跳出(終止)其所在的本層循環(huán),而不能完全跳出多層循環(huán)。要實(shí)現(xiàn)逐層跳出多層循環(huán)可以設(shè)置一個標(biāo)志變量,控制跳出循環(huán)。二、continue語句continue語句格式:continue;continue語句的功能:continue語句僅能在循環(huán)語句中使用。它的作用不是結(jié)束循環(huán),而是開始一次新的循環(huán)。結(jié)束一次循環(huán)對于for語句,將控制轉(zhuǎn)到執(zhí)行增量和條件測試部分。對于while和do-while語句,將控制轉(zhuǎn)到條件測試部分。循環(huán)的退出【例5.9】將1到100之間能同時(shí)被3和7整除的數(shù)的輸出。#include<stdio.h>voidmain(){intn;for(n=1;n<=100;n++){if((n%3!=0)||(n%7!=0))continue;printf("%5d",n);}}main(){inti,j,a=0;for(i=0;i<2;i++){for(j=0;j<4;j++)
{if(j%2)break;a++;}a++;#}printf(“a=%d\n”,a);}a=4a=5a=6a=71.i=0j=0,if為0,a從0到1j=1,if為1退出j循環(huán)執(zhí)行語句#a從1到22.i=1j=0,if為0,a從2到3j=1,if為1退出j循環(huán)執(zhí)行語句#a從3到4break的使用main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++)
{if(j%2)continue;x++;}x++;#}printf(“x=%d\n”,x);}x=4x=8x=6x=121.i=0,x從0到1j=0,if為0,x從1到2j=1,if為1
j=2,if為0,x從2到3j=3,if為1
執(zhí)行語句#x為42.i=1,x從4到5內(nèi)部循環(huán)
j=0,if為0,
x從5到6
j=1,if為1
j=2,if為0,x從6到7
j=3,if為1
x為8continue的使用5.7循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5.10】讀入10個數(shù),編寫程序求其中的最大值。程序如下:main(){inti=0;floatx,max;printf("\nPleaseinputdata:");scanf("%f",&x);max=x;for(i=1;i<10;i++){scanf("%f",&x);if(max<x)max=x;}printf("TheMaxdatais:%f\n",max);}main(){floatx,sum=0;inti=0;printf("Pleaseinputdata:");scanf("%f",&x);while(x>=0){sum=sum+x;i++;scanf("%f",&x);}printf("\ni=%d,sum=%f,ave=%.1f\n",i,sum,sum/i);}
【例5.11】求和與計(jì)數(shù)器的使用,求一批數(shù)據(jù)的平均值。【例5.12】求s=1!+2!+3!+...+20!main(){doubles=0,t=1;inti;for(i=1;i<=20;i++) {t=t*i; s=s+t;}printf("s=%e\n",s);}【例5.13】打印出200到300之間的所有素?cái)?shù)。算法分析:判斷一個數(shù)m是否是素?cái)?shù)的方法:設(shè)k為整型,且k=。讓m被2到除,如果m能被2~k之中任意一個數(shù)整除,則提前結(jié)束循環(huán),此時(shí)i的值必然小于或等于k;如果m不能被2~k之中任意一個數(shù)整除,則在完成最后一次循環(huán)后,i還要加1,因此i=k+1,然后才終止循環(huán)。mm所以在循環(huán)結(jié)束之后判斷i是否大于或等于k+1,若是,則表明m未被2~k之中任意一個數(shù)整除,可以斷定m就是“素?cái)?shù)”。依題意,m從200變化到300,依次判斷每一個數(shù)是否是素?cái)?shù),若是,則輸出。程序如下:#include"math.h"main(){intm,i,k,n=0;for(m=201;m<=300;m+=2){k=sqrt(m);for(i=2;i<=k;i++) if(m%i==0)break;if(i>=k+1){printf("%d,",m);n++;} if(n%10==0)printf("\n");}}【例5.14】猴子吃桃問題。#include"stdio.h"main(){intday,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/x2=x1;day--;}printf("total=%d\n",x1);}【例5.15】求s=a+aa+aaa+aa…a(n個),
如a=2,求s=2+22+222+2222+…。#include"stdio.h"main(){inta,n,count=1,sn=0,tn=0;printf("inputaandn:\n");scanf("%d,%d",&a,&n);/*輸入a和n*/printf("a=%dn=%d\n",a,n);while(count<=n){tn=tn+a;/*tn是每一項(xiàng)數(shù)值*/sn=sn+tn;/*sn是各項(xiàng)相加的和*/a=a*10;++count;}printf("sn=%d\n",sn);}【例1】一個百萬富翁遇見一個陌生人,達(dá)成換錢的協(xié)議:陌生人說:第一天我給你10萬元,你只需給我一分錢;第二天我依然給你10萬元,你只需給我二分錢;第三天我給你10萬元,你給我四分錢……以后你每天給我的錢是前一天的二倍,直到滿30天,富翁很高興,欣然同意了。請編程計(jì)算一下,30天后每人各得多少錢?分析:設(shè)fu:富翁得到的錢的總數(shù)
mo:陌生人得到的錢的總數(shù)
t:陌生人每天得到的錢數(shù)第一天:fu=100000.0t=0.01,mo=0.01元循環(huán):2~
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 殘障活動兒童策劃方案(3篇)
- 班級團(tuán)年活動策劃方案(3篇)
- 車間清潔衛(wèi)生管理制度(3篇)
- 《GAT 974.58-2011消防信息代碼 第58部分:消防水源分類與代碼》專題研究報(bào)告
- 中學(xué)學(xué)生社團(tuán)活動經(jīng)費(fèi)保障制度
- 養(yǎng)老院心理健康支持制度
- 養(yǎng)鴨技術(shù)培訓(xùn)課件
- 企業(yè)人力資源配置制度
- 養(yǎng)鴨保苗技術(shù)培訓(xùn)課件
- 交通違法行為舉報(bào)獎勵制度
- 深圳市鹽田區(qū)2025年數(shù)學(xué)六上期末綜合測試試題含解析
- DB5203∕T 38-2023 特色酒莊旅游服務(wù)等級劃分與評定
- 四川省成都市嘉祥外國語學(xué)校2024-2025學(xué)年七年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 華為客戶分級管理制度
- 雙向轉(zhuǎn)診職責(zé)與患者體驗(yàn)提升
- 2025年中考道德與法治三輪沖刺:主觀題常用答題術(shù)語速查寶典
- 2025屆北京豐臺區(qū)高三二模高考語文試卷試題(含答案詳解)
- 《四川省普通國省道養(yǎng)護(hù)預(yù)算編制辦法》及配套定額解讀2025
- 論語的測試題及答案
- 《機(jī)械制圖(第五版)》 課件 第9章 裝配圖
- 教師年薪合同協(xié)議
評論
0/150
提交評論