C語言程序設計第3版何欽銘-顏-暉-循環(huán)結構_第1頁
C語言程序設計第3版何欽銘-顏-暉-循環(huán)結構_第2頁
C語言程序設計第3版何欽銘-顏-暉-循環(huán)結構_第3頁
C語言程序設計第3版何欽銘-顏-暉-循環(huán)結構_第4頁
C語言程序設計第3版何欽銘-顏-暉-循環(huán)結構_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構C語言程序設計第3版何欽銘-顏-暉C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第1頁?!揪毩?-1】在例4-1程序中,如果對item賦初值0,運行結果是什么?為什么?如果將精度改為10-3,運行結果有變化嗎?為什么?解答:如果對item賦初值0,則程序運行結果是pi=0,因為item為0時不滿足while循環(huán)的執(zhí)行條件,即不執(zhí)行循環(huán),故pi值為0。如果將精度改為10-3,運行結果會有變化,因為精度改變意味著while循環(huán)的條件改變,精度變大使得while循環(huán)次數(shù)減少,必然影響到n的值?!揪毩?-2】運行例4-2程序時,如果將最后一個輸入數(shù)據(jù)改為-2,運行結果有變化嗎?如果第一個輸入數(shù)據(jù)是-1,運行結果是什么?為什么?解答:如果將最后一個輸入數(shù)據(jù)改為-2,運行結果沒有變化,因為最后一個負數(shù)是一結束標志,不進行統(tǒng)計,故任意一個負數(shù)都可以。如果第一個輸入數(shù)據(jù)是-1,運行結果是:Gradeaverageis0,因為第一個輸入就是-1,則while循環(huán)條件不成立,不執(zhí)行循環(huán)體?!揪毩?-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):輸入一個正實數(shù)eps,計算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精確到最后一項的絕對值小于eps(保留6位小數(shù))。試編寫相應程序。解答:#include<stdio.h>#include<math.h>intmain(void){intdenominator,flag;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=%f\n”,s);return0;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第2頁?!揪毩?-4】如果將例4-3程序中的do-while語句改為下列while語句,會影響程序的功能嗎?為什么?再增加一條什么語句,就可以實現(xiàn)同樣的功能?while(number!=0){number=number/10;count++;}解答:會有影響,因為當輸入數(shù)據(jù)number為0時,上述while循環(huán)將不執(zhí)行,count值仍為0,故輸出為0,不符合題目要求。可增加一條if語句來解決上面的問題,在while循環(huán)前加上語句“if(number==0)count=1;"?!揪毩?-5】例4-4程序中的第9?15行可以用下列for語句替代嗎?為什么?for(i=2;i<=m/2;i++)if(m%i==0)printf("No!\n");elseprintf("%disprimenumber!\n",m);解答:不能代替,因為只用一個數(shù)來除不足以判斷該數(shù)是否是素數(shù)。【練習4-6】猜數(shù)字游戲:先輸入2個不超過100的正整數(shù),分別是被猜數(shù)mynumber和允許猜測的最大次數(shù)n,再輸入你所猜的數(shù)yournumber,與被猜數(shù)mynumber進行比較,若相等,顯示猜中,;若不等,顯示與被猜數(shù)的大小關系,最多允許猜n次。如果1次就猜出該數(shù),提示“Bingo!”;如果3次以內(nèi)猜到該數(shù),則提示“LuckyYou!”;如果超過3次但不超過n次猜到該數(shù),則提示“GoodGuess!”;如果超過n次都沒有猜到,則提示“GameOver";如果在到達n次之前,用戶輸入了一個負數(shù),也輸出“GameOver”,并結束程序。試編寫相應程序。解答:#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==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){printf("GameOver!");break;}}C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第3頁。}【練習4-7】求e的值:輸入1個正整數(shù)n,計算下式求出e的值(保留2位小數(shù)),要求使用嵌套循環(huán)。試編寫相應程序。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;}printf("e=%0.2f\n",e);return0;}【練習4-8】運行例4-8的源程序1時,如果先輸入0,即輸入數(shù)據(jù)個數(shù)n=0,表示不再輸入任何成績,運行結果是什么?如何修改程序以應對這種情況?解答:當輸入數(shù)據(jù)個數(shù)n=0時,由于在for循環(huán)外首先得輸入一個成績,故程序仍將等待輸入第一個人的成績,這與輸入個數(shù)n=0矛盾,可修改如下:#include<stdio.h>intmain(void){inti,mark,max,n;printf("Entern:");scanf("%d",&n);if(n>0){printf("Enter%dmarks:",n);scanf("%d",&mark); /*讀入第一個成績*/max=mark; /*假設第一個成績是最高分*/for(i=1;i<n;i++){scanf("%d",&mark);C語言程序設計第3版何欽銘-顏C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第4頁。}printf("Max=%d\n",max);}return0;}【練習4-9】運行例4-8的源程序2時,如果輸入的第一個數(shù)就是負數(shù),表示不再輸入任何成績,運行結果是什么?如何修改程序以應對這種情況?解答:當輸入的第一個數(shù)就是負數(shù)時,將不執(zhí)行while循環(huán),程序運行結果就是輸出所輸入的負數(shù)?!揪毩?-10】找出最小的值:輸入一個正整數(shù)n,再輸入n個整數(shù),輸出最小值。試編寫相應程序。解答:#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);if(min>x)min=x;}printf("min=%d\n",min);return0;}【練習4-11】統(tǒng)計素數(shù)并求和:輸入2個正整數(shù)m和n(1WmWnW500),統(tǒng)計并輸出m和n之間素數(shù)的個數(shù)以及這些素數(shù)的和。素數(shù)就是只能被1和自身整除的正整數(shù),1不是素數(shù),2是素數(shù)。試編寫相應程序。解答:#include<stdio.h>#include<math.h>intmain(void){inti,m,n,j,count;doublesum;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第5頁。scanf("%d",&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=%d\nsum=%.0lf",count,sum);return0;}習題4一.選擇題1.C語言中while和do-while循環(huán)的主要區(qū)別是A。A.do-while的循環(huán)體至少無條件執(zhí)行一次B.while的循環(huán)控制條件比do-while的循環(huán)控制條件嚴格C.do-while允許從外部轉到循環(huán)體內(nèi)D.do-while的循環(huán)體不能是復合語句.下列敘述中正確的是C。break語句只能用于switch語句體中continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同.下列敘述中正確的是D。

C語言程序設計第3C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第6頁。do-while語句構成的循環(huán)只能用break語句退出。C.用do-while語句構成的循環(huán),在while后的表達式為非零時結束循環(huán)。D.用do-while語句構成的循環(huán),在while后的表達式為零時結束循環(huán)。.執(zhí)行x=-1;do{x=x*x;}while(!x);循環(huán)時,下列說法正確的是A。A.循環(huán)體將執(zhí)行一次C.循環(huán)體將執(zhí)行無限次B.循環(huán)體將執(zhí)行兩次D.系統(tǒng)將提示有語法錯誤.假設變量s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0),則與以下程序段s=a;for(b=1;b<=c;b++)s=s+1;功能等價的賦值語句是B。A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;.以下程序段的輸出結果是Bintmain(void){intnum=0,s=0;while(num<=2){num++;s+=num;}printf("%d\n",s);return0;}A.10 B.6 C.3 D.1.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結果為Cintmain(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=%d\n",m);return0;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第7頁。A.m=3 B.m=2 C.m=1 D.m=08.下列程序段的輸出結果是A。intmain(viod){inti;for(inti=1;i<6;i++){if(i%2!=0){printf("#");continue;}printf("*");}printf("\n");return0;}A.#*#*# B.##### C.***** D.*#*#*二、填空題1.若s=0,執(zhí)行循環(huán)語句for(i=1;i<=10;i=i+3)s=s+i;”后,i的值為13 。2.下列程序段的輸出結果是** 。intx=2;do{printf(“*”);x--;}while(!x==0);3.下列程序段的功能是計算:s=1+12+123+1234+12345。則劃線處應填t*10 。intt=0,s=0,i;for(i=1;i<=5;i++){t=i+ s=s+t;}printf("s=%d\n",s);4.以下程序的輸出結果是12intmain(void){intnum=0;while(num<6){num++;if(num==3)break;printf("%d,",num);}return0;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第8頁。5.閱讀下列程序并回答問題。intmain(void){inti,j,k=0,m=0;for(i=0;i<2;i++){; /*第5行*/for(j=0;j<3;j++)k++;m++; /*第9行*/}printf("k=%d,m=%d\n",k,m);}(1)程序的輸出是k=6,m=2 。(2)將第8行改為"m=m+k;",程序的輸出是k=6,m=9。⑶將第5行改為"k=0;",將第8行改為"m=m+k;",程序的輸出是k=3,m=6。6.下列程序運行時輸入62pay!,則結果是62ufd!。intmain(void){charc;inti;for(i=1;i<=6;ii++){c=getchar();if(c>='a'&&c<=’u’)c=c+5;elseif(c>='v'&&c<='z')c='a'+c-'v';putchar(c);}return0;}三.程序設計題1.求奇數(shù)和:輸入一批正整數(shù)(以零或負數(shù)為結束標志),求其中的奇數(shù)和。試編寫相應程序。解答:#include<stdio.h>intmain(void){intx,sum;printf("Inputintegers:");scanf("%d",&x);sum=0;while(x>0){if(x%2!=0)sum=sum+x;scanf("%d",&x);}printf("Thesumoftheoddnumbersis%d\n",sum);return0;}C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第9頁。.展開式求和:輸入1個實數(shù)x,計算并輸出下式的值,直到最后一項的絕對C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第9頁。s=x+x2/2!+x3/3!+x4/4!+…解答:#include<stdio.h>#include<math.h>doublefact(intn);intmain(void){inti;doublex,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;}.求序列和:輸入一個正整數(shù)n輸出2/1+3/2+5/3+8/5+…的前n項之和,保留2位小數(shù)。該序列從第2項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。試編寫相應程序。解答:#include<stdio.h>intmain(void){intn,i,s1=2,s2=3,s,p1=1,p2=2,p;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第10頁。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;p2=p;}}elseif(n==1)sum=2;elseif(n==2)sum=3.5;printf("sum=%.2lf\n",sum);return0;}.求序列和:輸入2個正整數(shù)a和n,求a+aa+aaa+aa…a(n個a)之和。例如,輸入2和3,輸出246(2+22+222)。試編寫相應程序。解答:#include<stdio.h>intmain(void){inta,n,i;doublesum,temp;printf("Inputa,n:");scanf("%d%d",&a,&n);sum=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分的硬幣,每種硬幣至少有一枚。輸入金額,問有哪幾種換法?針對每一種換法,輸出各種面額硬幣的數(shù)量和硬幣的總數(shù)量。試編寫相應程序。C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第11頁。#include<stdio.h>intmain(void){intmoney,money1,money2,sum;printf("Inputmoney:");scanf("%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=%d\nsum=%d\n",money1,money2,sum);elseprintf("money5=1,money2=%d,money1=%d\nsum=%d\n",money2,money1,sum);}return0;}.輸出水仙花數(shù)。輸入一個正整數(shù)n(3WnW7)輸出所有n位水仙花數(shù)。水仙花數(shù)是指一個n位正整數(shù),它各位數(shù)字的n次冪之和等于它本身。例如153的各位數(shù)字的立方和是:1353+33=153。試編寫相應程序。解答:#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+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;C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第12頁。k=m/10;}k=t;if(sum==t)printf("%d\n",t);}return0;}.求最大公約數(shù)和最小公倍數(shù)。輸入兩個正整數(shù)m和n(mW1000,nW1000),求其最大公約數(shù)和最小公倍數(shù)。試編寫相應程序。解答:#include<stdio.h>intmain(void){intm,n,j,k;do{printf("Inputm:");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ù)是%d\n”,j,k);return0;}.高空墜球。皮球從height(米)高度自由落下,觸地后反彈到原高度的一半,再落下,再反彈……如此反復。問皮球在第n次落地時,在空中一共經(jīng)過多少距離?第n次反彈的高度是多少?輸出保留1位小數(shù)。試編寫相應程序。解答:#include<stdio.h>intmain(void){doubledistance,height;inti,n;printf("Inputheight:");scanf("%lf",&height);C語言程序設計第C語言程序設計第3版何欽銘-顏-暉--循環(huán)結構全文共15頁,當前為第13頁。scanf("%d",&n);if(n==0)distance=0;else{for(inti=1;i<=n;i++){height=height/2;distance+=3*height;}}printf("第%d次落地時,共經(jīng)過距離為%0.1f.\口“,n,distance);printf("第%d次落地后的反彈高度為%0.1f.\口",n,height);return0;}.打菱形星號“*”圖案。輸入一個正整數(shù)n(n為奇數(shù)),打印一個高度為n的“*”菱形圖案。例如,當n為7時,打印出以下圖案。試編寫相應程序。*************************解答:#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'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論