版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章循環(huán)結(jié)構(gòu)【練習(xí)4-1】在例4-1程序中,如果對(duì)item賦初值0,運(yùn)行結(jié)果是什么?為什么?如果將精度改為10-3,運(yùn)行結(jié)果有變化嗎?為什么?解答:如果對(duì)item賦初值0,則程序運(yùn)行結(jié)果是pi=0,因?yàn)閕tem為0時(shí)不滿足while循環(huán)的執(zhí)行條件,即不執(zhí)行循環(huán),故pi值為0。如果將精度改為10-3,運(yùn)行結(jié)果會(huì)有變化,因?yàn)榫雀淖円馕吨鴚hile循環(huán)的條件改變,精度變大使得while循環(huán)次數(shù)減少,必然影響到兀的值。【練習(xí)4-2】運(yùn)行例4-2程序時(shí),如果將最后一個(gè)輸入數(shù)據(jù)改為-2,運(yùn)行結(jié)果有變化嗎?如果第一個(gè)輸入數(shù)據(jù)是-1,運(yùn)行結(jié)果是什么?為什么?解答:如果將最后一個(gè)輸入數(shù)據(jù)改為-2,運(yùn)行結(jié)果沒
2、有變化,因?yàn)樽詈笠粋€(gè)負(fù)數(shù)是一結(jié)束標(biāo)志,不進(jìn)行統(tǒng)計(jì),故任意一個(gè)負(fù)數(shù)都可以。如果第一個(gè)輸入數(shù)據(jù)是-1,運(yùn)行結(jié)果是:Gradeaverageis0,因?yàn)榈谝粋€(gè)輸入就是-1,則while循環(huán)條件不成立,不執(zhí)行循環(huán)體。【練習(xí)4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+):輸入一個(gè)正實(shí)數(shù)eps,計(jì)算序列1-1/4+1/7-1/10+1/13-1/16+的值,精確到最后一項(xiàng)的絕對(duì)值小丁eps(保留6位小數(shù))。試編寫相應(yīng)程序。解答:#include<stdio.h>#include<math.h>intmain(void)(intdenominator,flag
3、;doubleitem,s,eps;printf(“Inputeps:”);scanf("lf”,&eps);flag=1;denominator=1;item=1.0;s=0;while(fabs(item)>=eps)(item=flag*1.0/denominator;s=s+item;flag=-flag;denominator=denominator+3;printf(“s=%fn”,s);return0;【練習(xí)4-4】如果將例4-3程序中的do-while語句改為下歹Uwhile語句,會(huì)影響程序的功能嗎?為什么?再增加一條什么語句,就可以實(shí)現(xiàn)同樣的功能?wh
4、ile(number!=0)(number=number/10;count+;解答:會(huì)有影響,因?yàn)楫?dāng)輸入數(shù)據(jù)number為0時(shí),上述while循環(huán)將不執(zhí)行,count值仍為0,故輸出為0,不符合題目要求??稍黾右粭lif語句來解決上面的問題,在while循環(huán)前加上語句"if(number=0)count=1;【練習(xí)4-5】例4-4程序中的第915行可以用下列for語句替代嗎?為什么?for(i=2;i<=m/2;i+)if(m%i=0)printf("No!n");elseprintf("%disprimenumber!n",m);解答:不
5、能代替,因?yàn)橹挥靡粋€(gè)數(shù)來除不足以判斷該數(shù)是否是素?cái)?shù)。【練習(xí)4-6】猜數(shù)字游戲:先輸入2個(gè)不超過100的正整數(shù),分別是被猜數(shù)mynumber和允許猜測(cè)的最大次數(shù)n,再輸入你所猜的數(shù)yournumber,與被猜數(shù)mynumber進(jìn)行比較,若相等,顯示猜中,;若不等,顯示與被猜數(shù)的大小關(guān)系,最多允許猜n次。如果1次就猜出該數(shù),提示“Bingo!”;如果3次以內(nèi)猜到該數(shù),則提示“LuckyYou!”;如果超過3次但不超過n次猜到該數(shù),則提示“GoodGuess!”;如果超過n次都沒有猜到,則提示GameOverGameOverGameOver如果在到達(dá)n次之前,用戶輸入了一個(gè)負(fù)數(shù),也輸出“GameOv
6、er”,并結(jié)束程序。試編寫相應(yīng)程序。解答:#include<stdio.h>intmain(void)intmynumber,n,yournumber,i;printf("Inputmynumber:");scanf("%d”,&mynumber);printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i+)printf("Inputyournumber:");scanf("%d”,&yournumber);if(i
7、=1&&yournumber=mynumber)printf("Bingo!”);break;if(i=2|i=3)&&yournumber=mynumber)printf("Luckyyou!");break;if(i>3&&i<=n)&&yournumber=mynumber)printf("GoodGuess!");break;if(i=n&&mynumber!=yournumber)|mynumber<0|yournumber<0)p
8、rintf("GameOver!");break;return0;【練習(xí)4-7】求e的值:輸入1個(gè)正整數(shù)n,計(jì)算下式求出e的值(保留2位小數(shù)),要求使用嵌套循環(huán)。試編寫相應(yīng)程序。e=1+1/1!+1/2!+1/3!+1/n!解答:#include<stdio.h>intmain(void)inti,j,n;doublee,t;printf("Inputn:");scanf("%d",&n);e=1;for(i=1;i<=n;i+)t=1;for(j=1;j<=i;j+)t=t*j;e=e+1.0/t;p
9、rintf("e=%0.2fn",e);return0;【練習(xí)4-8】運(yùn)行例4-8的源程序1時(shí),如果先輸入0,即輸入數(shù)據(jù)個(gè)數(shù)n=0,表示不再輸入任何成績,運(yùn)行結(jié)果是什么?如何修改程序以應(yīng)對(duì)這種情況?解答:當(dāng)輸入數(shù)據(jù)個(gè)數(shù)n=0時(shí),由丁在for循環(huán)外首先得輸入一個(gè)成績,故程序仍將等待輸入第一個(gè)人的成績,這與輸入個(gè)數(shù)n=0矛盾,可修改如下:#include<stdio.h>intmain(void)inti,mark,max,n;printf("Entern:");scanf("%d",&n);if(n>0)pri
10、ntf("Enter%dmarks:",n);scanf("%d",&mark);/*讀入第一個(gè)成績*/max=mark;/*假設(shè)第一個(gè)成績是最高分*/for(i=1;i<n;i+)scanf("%d",&mark);if(max<mark)max=mark;printf("Max=%dn",max);return0;【練習(xí)4-9】運(yùn)行例4-8的源程序2時(shí),如果輸入的第一個(gè)數(shù)就是負(fù)數(shù),表示不再輸入任何成績,運(yùn)行結(jié)果是什么?如何修改程序以應(yīng)對(duì)這種情況?解答:當(dāng)輸入的第一個(gè)數(shù)就是負(fù)數(shù)時(shí),將不
11、執(zhí)行while循環(huán),程序運(yùn)行結(jié)果就是輸出所輸入的負(fù)數(shù)?!揪毩?xí)4-10】找出最小的值:輸入一個(gè)正整數(shù)n,再輸入n個(gè)整數(shù),輸出最小值。試編寫相應(yīng)程序。解答:#include<stdio.h>intmain(void)(inti,min,n,x;printf("inputrn:");scanf("%d",&n);printf("inputnumbers:");scanf("%d",&x);min=x;for(i=1;i<n;i+)(scanf("%d",&x)
12、;if(min>x)min=x;printf("min=%dn",min);return0;【練習(xí)4-11】統(tǒng)計(jì)素?cái)?shù)并求和:輸入2個(gè)正整數(shù)m和n(1<m<n<500),統(tǒng)計(jì)并輸出m和n之間素?cái)?shù)的個(gè)數(shù)以及這些素?cái)?shù)的和。素?cái)?shù)就是只能被1和自身整除的正整數(shù),1不是素?cái)?shù),2是素?cái)?shù)。試編寫相應(yīng)程序。解答:#include<stdio.h>#include<math.h>intmain(void)(inti,m,n,j,count;doublesum;printf("Enterm:");scanf("%d&q
13、uot;,&m);printf("Entern:");scanf("%d",&n);count=0;sum=0;for(;m<=n;m+)j=sqrt(m);for(i=2;i<=j;i+)if(m%i=0)break;if(i>j&&m!=1)sum=sum+m;count+;printf("count=%dnsum=%.0lf",count,sum);A. return0;習(xí)題4選擇題C語言中while和do-while循環(huán)的主要區(qū)別是Acdo-while的循環(huán)體至少無條件執(zhí)行一次
14、while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴(yán)格do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)do-while的循環(huán)體不能是復(fù)合語句下列敘述中正確的是C。1. break語句只能用丁switch語句體中continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同下列敘述中正確的是do-while語句構(gòu)成的循環(huán)不能用其它語句構(gòu)成的循環(huán)來代替。A. do-while語句構(gòu)成的循環(huán)只能用break語句退出。B. 用do-while語句構(gòu)成的循環(huán),在while后的表達(dá)式為非零時(shí)結(jié)束循
15、環(huán)。C. 用do-while語句構(gòu)成的循環(huán),在while后的表達(dá)式為零時(shí)結(jié)束循環(huán)。4.執(zhí)行x=-1;dox=x*x;while(!x);循環(huán)時(shí),下歹0說法正確的是A。循環(huán)體將執(zhí)行一次循環(huán)體將執(zhí)行無限次循環(huán)體將執(zhí)行兩次系統(tǒng)將提示有語法錯(cuò)誤假設(shè)變量s、a、b、c均已定義為整型變量,且a、c均已賦值(c大丁0),則與以下程序段s=a;for(b=1;b<=c;b+)s=s+1;功能等價(jià)的賦值語句是B。A.s=a+b;B.s=a+c;s=s+c;s=b+c;6 .以下程序段的輸出結(jié)果是B。intmain(void)(intnum=0,s=0;while(num=2)(num+;s+=num;pr
16、intf("%dn",s);7 return0;A.10B.6C.3D.1則輸出結(jié)果為A.10B.6C.3D.1則輸出結(jié)果為則輸出結(jié)果為則輸出結(jié)果為.運(yùn)行以下程序后,如果從鍵盤上輸入6514回車,C。8 intmain(void)(intm,n;printf("Enterm,n;");scanf("%d%d",&m,&n):while(m!=n)(while(m>n)m=m-n;while(n>m)n=n-m;printf("m=%dn",m);return0;A.m=3B.m=2C.m
17、=1D.m=0.下列程序段的輸出結(jié)果是A。intmain(viod)(inti;for(inti=1;i<6;i+)if(i%2!=0)(printf("#");continue;printf("*");printf("n");return0;A.#*#*#B.#*D.*#*#*二、填空題1.若s=0,執(zhí)行循環(huán)語句"for(i=1;i<=10;i=i+3)s=s+i;"后,i的值為13。2 .下列程序段的輸出結(jié)果是*。intx=2;doprintf(“*”);x-;while(!x=0);.下列程序段的
18、功能是計(jì)算:s=1+12+123+1234+12345。則劃線處應(yīng)填t*10。intt=0,s=0,i;for(i=1;i<=5;i+)t=i+;s=s+t;printf("s=%dn",s);.以下程序的輸出結(jié)果是12。intmain(void)intnum=0;while(num<6)num+;if(num=3)break;printf("%d,",num);return0;閱讀下列程序并回答問題。intmain(void)inti,j,k=0,m=0;for(i=0;i<2;i+);/*第5行*/for(j=0;j<3;j+
19、)k+;m+;/*第9行*/printf("k=%d,m=%dn",k,m);程序的輸出是k=6,m=2。(2) 將第8行改為"m=m+k;",程序的輸出是k=6,m=9。(3) 將第5行改為"k=0;",將第8行改為"m=m+k;",程序的輸出是k=3,m=6o下列程序運(yùn)行時(shí)輸入62pay!,則結(jié)果是62ufd!。intmain(void)(charc;inti;for(i=1;i<=6;ii+)(c=getchar();if(c>='a'&&c<=,u,)c=c
20、+5;elseif(c>='v'&&c<='z')c='a'+c-'v'putchar(c);return0;程序設(shè)計(jì)題1.求奇數(shù)和:輸入一批正整數(shù)(以零或負(fù)數(shù)為結(jié)束標(biāo)志),求其中的奇數(shù)和。試編寫相應(yīng)程序。解答:#include<stdio.h>intmain(void)(intx,sum;printf("Inputintegers:");scanf("%d",&x);sum=0;while(x>0)(if(x%2!=0)sum=sum+
21、x;scanf("%cT',&x);printf("Thesumoftheoddnumbersis%dn",sum);return0;2.展開式求和:輸入1個(gè)實(shí)數(shù)x,計(jì)算并輸出下式的值,直到最后一項(xiàng)的絕對(duì)值小丁0.00001,計(jì)算結(jié)果保留2位小數(shù)。要求定義和調(diào)用函數(shù)fact(n)計(jì)算n的階乘,可以調(diào)用pow()函數(shù)求籍。試編寫相應(yīng)程序。s=x+x22!+x3/3!+x4/4!+解答:#include<stdio.h>#include<math.h>doublefact(intn);intmain(void)(inti;dou
22、blex,s,item;printf("Inputx:");scanf("%lf",&x);s=0;item=1.0;i=1;while(fabs(item)>=1e-5)item=pow(x,i)/fact(i);s=s+item;i+;printf("s=%.2lf",s);return0;doublefact(intn)inti;doubleresult;for(result=1,i=1;i<=n;i+)result=result*i;returnresult;3.求序列和:輸入一個(gè)正整數(shù)n,輸出2/1+3/
23、2+5/3+8/5+的前n項(xiàng)之和,保留2位小數(shù)。該序列從第2項(xiàng)起,每一項(xiàng)的分子是前一項(xiàng)分子與分母的和,分母是前一項(xiàng)的分子。試編寫相應(yīng)程序。解答:#include<stdio.h>intmain(void)intn,i,s1=2,s2=3,s,p1=1,p2=2,p;doublesum,item;printf("Inputn:");scanf("%d",&n);if(n>=3)for(i=1;i<=n-2;i+)s=s1+s2;p=p1+p2;item=1.0*s/p;sum+=item;s1=s2;s2=s;p1=p2;p
24、2=p;elseif(n=1)sum=2;elseif(n=2)sum=3.5;printf("sum=%.2lfn",sum);return0;a(n個(gè)a)之和。例a(n個(gè)a)之和。例4.求序歹0和:輸入2個(gè)正整數(shù)a和n,求a+aa+aaa+aa如,輸入2和3,輸出246(2+22+222)。試編寫相應(yīng)程序解答:#include<stdio.h>intmain(void)inta,n,i;doublesum,temp;printf("Inputa,n:");scanf("%d%d",&a,&n);sum=
25、temp=0;for(i=1;i<=n;i+)temp=temp*10+a;sum=sum+temp;printf("sum=%.0lf",sum);return0;5.換硬幣。將一筆零錢(大丁8分,小丁1元,精確到分)換成5分、2分和1分的硬幣,每種硬幣至少有一枚。輸入金額,問有哪幾種換法?針對(duì)每一種換法,輸出各種面額硬幣的數(shù)量和硬幣的總數(shù)量。試編寫相應(yīng)程序。解答:#include<stdio.h>intmain(void)intmoney,money1,money2,sum;printf("Inputmoney:");scanf(&
26、quot;%d",&money);sum=0;for(money1=1;money1<=8;money1+)for(money2=1;money2<=3;money2+)if(money1+money2*2+5=money)sum=money1+money2+1;if(money2>money1)printf("money5=1,money1=%d,money2=%dnsum=%dn",money1,money2,sum);elseprintf("money5=1,money2=%d,money1=%dnsum=%dn"
27、;,money2,money1,sum);return0;6.輸出水仙花數(shù)。輸入一個(gè)正整數(shù)n(3<n勺)輸出所有n位水仙花數(shù)。水仙花數(shù)是指一個(gè)n位正整數(shù),它各位數(shù)字的n次籍之和等丁它本身。例如153的各位數(shù)字的立方和是:13+53+33=153。試編寫相應(yīng)程序。解答:#include<stdio.h>#include<math.h>intmain(void)intn,i,t,m,sum,j,k;printf("Inputn:");scanf("%d",&n);for(j=0,i=1;i<=n;i+)j=j*10
28、+9;for(k=1,i=1;i<n;i+)k=k*10;for(;k<=j;k+)(t=k;sum=0;while(k!=0)(m=k;k=k%10;sum=sum+pow(k,n);k=m/10;k=t;if(sum=t)printf("%dn",t);return0;求最大公約數(shù)和最小公倍數(shù)。輸入兩個(gè)正整數(shù)m和n(m<1000,n<1000),求其最大公約數(shù)和最小公倍數(shù)。試編寫相應(yīng)程序解答:#include<stdio.h>intmain(void)(intm,n,j,k;doprintf("Inputm:");
29、scanf("%d",&m);printf("Inputn:");scanf("%d",&n);while(m<0|n<0);j=m;while(j%n!=0)j=j+m;k=(m*n)/j;printf("最小公倍數(shù)是%d,最大公約數(shù)是%dn",j,k);return0;高空墜球。皮球從height(米)高度自由落下,觸地后反彈到原高度的一半,再落下,再反彈如此反復(fù)。問皮球在第n次落地時(shí),在空中一共經(jīng)過多少距離?第n次反彈的高度是多少?輸出保留1位小數(shù)。試編寫相應(yīng)程序。解答:#incl
30、ude<stdio.h>intmain(void)(doubledistance,height;inti,n;printf("Inputheight:");scanf("%lf',&height);printf("Inputn:");scanf("%d",&n);if(n=0)distance=0;else(for(inti=1;i<=n;i+)(height=height/2;distance+=3*height;printf("第d次落地時(shí),共經(jīng)過距離為0.1lf.n”
31、,n,distance);printf("第d次落地后的反彈高度為%0.1lf.n”,n,height);return0;打菱形星號(hào)"*”圖案。輸入一個(gè)正整數(shù)n(n為奇數(shù)),打印一個(gè)高度為n的“*”菱形圖案。例如,當(dāng)n為7時(shí),打印出以下圖案。試編寫相應(yīng)程序。* * * * *解答:#include<stdio.h>intmain(void)inti,j,n;printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i=i+2)for(j=1;j<=n-i;j+)printf("");for(j=1;j<=i;j+)printf("*");putchar('n');for(i=1;i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國五滾珠脹頭市場調(diào)查研究報(bào)告
- 二零二五年度會(huì)展中心場地租賃協(xié)議11篇
- 二零二五年度購物中心裝修承包合同安全責(zé)任協(xié)議
- 二零二五年度贍養(yǎng)老人生活照料及費(fèi)用分?jǐn)倕f(xié)議范本
- 二零二五年度足浴店與知名品牌聯(lián)名活動(dòng)合作協(xié)議
- 二零二五年度酒店客房用品租賃合作經(jīng)營協(xié)議
- 二零二五年度附條件附條件文化產(chǎn)業(yè)投資居間服務(wù)協(xié)議
- 二零二五年度車輛保養(yǎng)與汽車金融產(chǎn)品合作框架協(xié)議4篇
- 二零二五年度廣告公司創(chuàng)意總監(jiān)聘用合同范本3篇
- 事業(yè)單位臨時(shí)人員2024勞動(dòng)協(xié)議樣式版
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 2024年度-美團(tuán)新騎手入門培訓(xùn)
- 初中數(shù)學(xué)要背誦記憶知識(shí)點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測(cè)及風(fēng)險(xiǎn)評(píng)估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
- 20100927-宣化上人《愣嚴(yán)咒句偈疏解》(簡體全)
- 4-熔化焊與熱切割作業(yè)基礎(chǔ)知識(shí)(一)
- 單元教學(xué)評(píng)一體化設(shè)計(jì)的探索與實(shí)踐以統(tǒng)編語文教材四年級(jí)下冊(cè)第一單元為例
評(píng)論
0/150
提交評(píng)論