第一篇:C語言課后習題答案
C語言課后習題答案-第四版-第一章
5、請參照本章例題,編寫一個C語言程序,輸出以下信息: **************************** V e r y G o o d!**************************** #include
printf(“**************************nn”);printf(“
Very Good!nn”);printf(“**************************n”);return 0;}
6、編寫一個C語言程序,輸入a,b,c三個值,輸出其中最大值。#include
第3章
1、假如我國國民生產總值的年增長率為9%,計算10年后我國國民生產總值與現在相比增長多少百分比。計算公式為
P=(1+r)^n r 為年增長率,n 為年數,p為與現在相比的倍數。#include
2、存款利息計算。有1000元,想存5年,可按以下5種辦法存:(1)一次存5年期。
(2)先存2年期,到期后將本息在存3年期。(3)先存3年期,到期后將本息在存2年期。
(4)先存1年期,到期后將本息在存1年期,連續存5次。(5)存活期存款。活期利息每一季度結算一次。2007年12月的銀行存款利息如下: 1年定期存款利息為4.14%; 2年定期存款利息為4.68%; 3年定期存款利息為5.4%; 5年定期存款利息為5.85%;
活期存款利息為0.27%(活期利息每一季度結算一次。)如果r 為年利率,n 為存款年數,則計算本息和的公式為 1年期本息和:P=1000*(1+r);n年期本息和:P=1000*(1+n*r);存n次1年期的本息和:P=1000*(1+ r)^n;存活期本息和:P=1000*(1+r/4)^4n。
說明:P=1000*(1+r/4)^4n。是一個季度的本息和。#include
// 一次存5年期
p2=p*(1+2*r2)*(1+3*r3);
// 先存2年期,到期后將本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);
// 先存3年期,到期后將本息再存2年期
p4=p*pow(1+r1,5);
// 存1年期,到期后將本息存再存1年期,連續存5次
p5=p*pow(1+r0/4,4*5);
// 存活期存款。活期利息每一季度結算一次
printf(“p1=%fn”,p1);
// 輸出按第1方案得到的本息和
printf(“p2=%fn”,p2);
// 輸出按第2方案得到的本息和
printf(“p3=%fn”,p3);
// 輸出按第3方案得到的本息和
printf(“p4=%fn”,p4);
// 輸出按第4方案得到的本息和
printf(“p5=%fn”,p5);
// 輸出按第5方案得到的本息和
return 0;}
3、購房從銀行貸了一筆款d,準備每月還款額為p,月利率為r,計算多少月能還清。設d為300000元,p為6000元,r為1%。對求得的月份取小數點后一位,對第2位按四舍五入處理。提示:計算還請月數m 的公式如下: m =[ log p –log(p-d*r)] / log(1+r)可以講公式該寫為
m ={ log [p /(p – d*r)] }/ log(1+r)C的庫函數中有求對數的函數log10,是求以10為底的對數,log(p)表示log p。#include
6、請編將“China”,編譯成密碼,密碼規律是:用原有的字母后面第4個字母代替原來的字母。#include
7、設圓半徑r =1.5,圓柱高h=3,求圓周長、圓面積、圓柱表面積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求有文字說明,取小數點后2位數字。請編程序。#include
//要求輸入圓半徑r和圓柱高h
l=2*pi*r;
//計算圓周長l s=r*r*pi;
//計算圓面積s sq=4*pi*r*r;
//計算圓球表面積sq vq=3.0/4.0*pi*r*r*r;
//計算圓球體積vq vz=pi*r*r*h;
//計算圓柱體積vz printf(“圓周長為:
l=%6.2fn”,l);printf(“圓面積為:
s=%6.2fn”,s);
printf(“圓球表面積為:
sq=%6.2fn”,sq);printf(“圓球體積為:
v=%6.2fn”,vq);printf(“圓柱體積為:
vz=%6.2fn”,vz);return 0;}
第四章
4、有3個正整數a,b,c,有鍵盤輸入,輸出其中最大的數。#include if(b printf(“max=%dn”,c); else printf(“max=%dn”,b); else if(a printf(“max=%dn”,c);else } printf(“max=%dn”,a);return 0; 4、有3個正整數a,b,c,有鍵盤輸入,輸出其中最大的數。#include int a,b,c,temp,max;printf(“請輸入三個整數:”);scanf(“%d,%d,%d”,&a,&b,&c);temp=(a>b)?a:b; /*將a和b中的大者存入temp中*/ max=(temp>c)?temp:c; /*將a和b中的大者與c比較,取最大者*/ printf(“三個整數的最大數是%dn”,max);return 0;} 5、從鍵盤輸入一個小于1000的正整數,要求輸出它的平方根(如平方根不是整數,則輸出其整數部分)。要求在輸入數據后先對其檢查是否為小于1000的正數。若不是,則要求從新輸入。#include printf(“請輸入一個小于%d的整數i:”,M);scanf(“%d”,&i);while(i>M) { printf(“輸入的數不符合要求,請重新輸入一個小于%d的整數i:”,M); } k=sqrt(i);printf(“%d的平方根的整數部分是:%dn”,i,k);return 0;} 6、有一個函數: scanf(“%d”,&i); x (x<1) y(1<=x<10) 3*x – 11 (x>=10)= 2*x1 (x<0) Y = 0 (x=0) (x>0) 寫程序,輸入x 的值,輸出y 相應的值。#include int x,y; printf(“please enter x:”); scanf(“%d”,&x); y=0; if(x>=0) if(x>0)y=1; else y=-1; printf(“x=%d,y=%dn”,x,y);return 0;{ } 8、給出一百分制成績,要求輸出成績等級‘A’,’B’,’C’,’D’,’E’。90分以上為‘A’,80~89分為’B’,70~79分為’C’,60~69分為’D’,60分以下為’E’。#include char grade; printf(“請輸入學生成績:”); scanf(“%f”,&score); while(score>100||score<0){ } switch((int)(score/10)){ case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;printf(“n 輸入有誤,請重輸”);scanf(“%f”,&score);case 6: grade='D';break;case 5: case 4: case 3: case 2: case 1: case 0: grade='E';} printf(“成績是 %5.1f,相應的等級是%cn ”,score,grade);return 0;} 9、給出一個不多于5位數的正整數;(1)求出它是幾位數;(2)分別輸出每一位數字; (3)按逆順序輸出各位數,例如原有數為123,應輸出321.#include printf(“請輸入一個整數(0-99999):”);scanf(“%d”,&num);if(num>9999) place=5;else if(num>999)place=4;else if(num>99)place=3;else if(num>9)place=2;else place=1;printf(“位數:%dn”,place);printf(“每位數字為:”);ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);printf(“n反序數字為:”);switch(place){ case 5: printf(“%d%d%d%d%dn”,indiv,ten,hundred,thousand,ten_thousand);break;case break;case 3:printf(“%d%d%dn”,indiv,ten,hundred);break;case 2: printf(“%d%dn”,indiv,ten);break;case 1: printf(“%dn”,indiv);break;} return 0;} 11、輸入4個整數,要求按由小到大的順序輸出。#include { t=a;a=b;b=t;} if(a>c)4: printf(“%d%d%d%dn”,indiv,ten,hundred,thousand); { t=a;a=c;c=t;} if(a>d) { t=a;a=d;d=t;} if(b>c) { t=b;b=c;c=t;} if(b>d) { t=b;b=d;d=t;} if(c>d) { t=c;c=d;d=t;} printf(“排序結果如下: n”);printf(“%d %d %d %d n” ,a,b,c,d);return 0;} 12、有4個圓塔,圓心分別為(2,2)、(-2,2)、(-2,-2)、(2,-2),圓半徑為 1,這4個圓塔高位10cm, 塔以外無建筑物。求該點的建筑物高度(塔外的高度為零)。#include /*求該點到各中心點距離*/ d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);if(d1>1 && d2>1 && d3>1 && d4>1) h=0;/*判斷該點是否在塔外*/ printf(“該點高度為 %dn”,h);return 0;} 第五章 例5.7 用pi/4=1-1/3+1/5-1/7+??公式求pi近似值,直到發現某一項的絕對值小于10^6為止。 #include // 程序中用到數學函數fabs,應包含頭文件math.n int main(){ int sign=1,count=0; // sign用來表示數值的符號,count用來統計循環次數 double pi=0.0,n=1.0,term=1.0;// pi開始代表多項式的值,最后代表π的值,n 代 表 分 母,term代表當前項的值 while(fabs(term)>=1e-8) // 檢查當前項term的絕對值是否大于或等于10的(-6)次方 { pi=pi+term; // 把當前項term累加到pi中 n=n+2; // n+2是下一項的分母 sign=-sign; // sign代表符號,下一項的符號與上一項符號相反 } pi=pi*4; // 多項式的和pi乘以4,才是π的近似值 printf(“pi=%10.8fn”,pi); // 輸出π的近似值 printf(“count=%dn”,count); // 輸出循環次數 return 0;} 3、輸入兩個正整數m和n,求其最大公約數和最小公倍數。#include // 求出下一項的值term count++; // count累加1 { int p,r,n,m,temp;printf(“請輸入兩個正整數n,m:”);scanf(“%d,%d,”,&n,&m);if(n temp=n; n=m; m=temp;} p=n*m;while(m!=0){ r=n%m; n=m; m=r;} printf(“它們的最大公約數為:%dn”,n);printf(“它們的最小公約數為:%dn”,p/n);return 0;} 4、輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。#include char c; int letters=0,space=0,digit=0,other=0; printf(“請輸入一行字符:n”); while((c=getchar())!='n') { if(c>='a' && c<='z' || c>='A' && c<='Z') letters++; else if(c==' ') space++; else if(c>='0' && c<='9') digit++; else other++; } printf(“字母數:%dn空格數:%dn數字數:%dn其它字符數:%dn”,letters,space,digit,other); return 0; } 5、求Sn=a+aa+aaa+??+aa??a之值,其中a是一個數字,n 表示a 的位數。n 由鍵盤輸入。#include } printf(“a+aa+aaa+...=%dn”,sn);return 0;} 6、求和:1!+2!+3!+??+20!。#include t=t*n; s=s+t;} printf(“1!+2!+...+20!=%22.15en”,s);return 0;} 7、求1+2+3+??+100+1+2^2+3^2+4^2++50^2+1+1/2+1/3+1/4+??+1/10。#include {s1=s1+k;} for(k=1;k<=n2;k++)/*計算1到50各數的平方和*/ {s2=s2+k*k;} for(k=1;k<=n3;k++)/*計算1到10的各倒數和*/ ? ? {s3=s3+1/k;} printf(“sum=%15.6fn”,s1+s2+s3);return 0;} 8、輸出所有的“水仙花數”,所謂“水仙花數”是指一個3位數,其各位數字立方和等于該數本身。例如153是一位水仙花數,因為153=13+53+33。#include } printf(“n”);return 0;i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i + j*j*j + k*k*k)printf(“%d ”,n);} 9、編程求1000之內的完數,并按下面格式輸出其因子:its factors are 1,2,3 #include s=0;for(i=1;i if((m%i)==0)s=s+i;if(s==m){ } printf(“%d,its factors are ”,m);for(i=1;i } return 0;} 10、有一個分數序列: 2/1,3/2,5/3,8/5,13/8,21/13,?? 求出這個數列前20項之和。#include } printf(“sum=%16.10fn”,s);return 0;} 11、一個球從100米敢賭下落,每次反彈高度為原來的一半,在下落,在反彈。求第10次落地時共經過多少米?第10次反彈多高? #include } printf(“第10次落地時共經過%f米n”,sn);printf(“第10次反彈%f米n”,hn);return 0;} 12、猴子吃桃問題。猴子第1天摘了若干個桃子,當即吃了一半零一個;第2剩下的吃了一半零一個,一次循環。到第十天時想吃就剩下一個桃子。求第一天摘了幾個桃子? #include /*第n次落地時共經過的米數*/ hn=hn/2; /*第n次反跳高度*/ while(day>0){ x1=(x2+1)*2; /*第1天的桃子數是第2天桃子數加1后的2倍.*/ } printf(“total=%dn”,x1);return 0;} 16、輸出以下圖案: * *** ***** ******* ***** *** * #include for(j=0;j<=2-i;j++) printf(“ ”); for(k=0;k<=2*i;k++) printf(“*”); printf(“n”);} for(i=0;i<=2;i++){ for(j=0;j<=i;j++) printf(“ ”); for(k=0;k<=4-2*i;k++) printf(“*”); printf(“n”);} return 0;} 17、甲隊A,B,C 3 人,乙隊 X,Y,Z 3人。A不和X比;X,Z比,請編程找出3 對賽手的名單。#include int main(){ C不和 char i,j,k; /*是a的對手;j是b的對手;k是c的對手*/ for(i='x';i<='z';i++) } 第六章 1、用篩選法求100之內的素數。#include for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i if(i!=j) for(k='x';k<='z';k++) if(i!=k && j!=k) if(i!='x' && k!='x' && k!='z') printf(“A--%cnB--%cnC--%cn”,i,j,k); return 0; for(j=i+1;j<=100;j++) { if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf(“n”); for(i=2,n=0;i<=100;i++){ if(a[i]!=0) { printf(“%5d”,a[i]); n++; } if(n==10) { printf(“n”); n=0; } } printf(“n”); return 0;} 2、用選擇法對10個整數排序。#include printf(“enter data:n”); for(i=1;i<=10;i++) { printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(“n”); printf(“The orginal numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”); for(i=1;i<=9;i++){ min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“nThe sorted numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”); return 0;} 3、求一個3 x 3 的整型矩陣對角線元素之和。#include printf(“enter data:n”); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(“%3d”,&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf(“sum=%6dn”,sum); return 0;} 4、有一個已排好序的數組,要求輸入一個數后,按原來排序的規律將它插入數組中。#include int temp1,temp2,number,end,i,j; printf(“array a:n”); for(i=0;i<10;i++) printf(“%5d”,a[i]); printf(“n”); printf(“insert data:”); scanf(“%d”,&number); end=a[9]; if(number>end) a[10]=number; else { for(i=0;i<10;i++){ if(a[i]>number) { temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } printf(“Now array a:n”); for(i=0;i<11;i++) printf(“%5d”,a[i]); printf(“n”); return 0;} 5、將一個數組中的值按逆順序重新存放。例如:8,6,5,4,1。要求改為:1,4,5,6,8.。#include printf(“enter array a:n”); for(i=0;i scanf(“%d”,&a[i]); printf(“array a:n”); for(i=0;i printf(“%4d”,a[i]); for(i=0;i 素的值互換 { temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } printf(“nNow,array a:n”);for(i=0;i printf(“%4d”,a[i]); //循環的作用是將對稱的元 printf(“n”); return 0;} 6、輸出以下楊輝三角形(要求輸出10行)。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ???????????? #include for(i=0;i { a[i][i]=1; a[i][0]=1; } for(i=2;i for(j=1;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i printf(“%6d”,a[i][j]); printf(“n”); } printf(“n”); return 0;} 7、輸出“魔方陣”。所謂魔方陣就是每行每列和對角線之和相等。例如: 1 6 3 5 7 4 9 2 要求輸出1~n^2的自然數構成的魔方陣。#include p=1; while(p==1){ printf(“enter n(n=1--15):”); scanf(“%d”,&n); if((n!=0)&&(n<=15)&&(n%2!=0)) p=0; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++){ i=i-1; j=j+1; if((i<1)&&(j>n)) { i=i+2; j=j-1; } else { if(i<1)i=n; if(j>n)j=1; } if(a[i][j]==0) a[i][j]=k; else { i=i+2; j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) {for(j=1;j<=n;j++) printf(“%5d”,a[i][j]); printf(“n”); } return 0;} 9、有15個數按由大到小順序存放在一個數組中,輸入一個數,要求折半查找法找出該數是數組中第幾個元素值。如果不在數組中則輸出“無此數”。#include int i,number,top,bott,mid,loca,a[N],flag=1,sign; char c; printf(“enter data:n”); scanf(“%d”,&a[0]); i=1; while(i { scanf(“%d”,&a[i]); if(a[i]>=a[i-1]) i++; else printf(“enter this data again:n”); } printf(“n”); for(i=0;i printf(“%5d”,a[i]); printf(“n”); while(flag){ printf(“input number to look for:”); scanf(“%d”,&number); sign=0; top=0; //top是查找區間的起始位置 bott=N-1; //bott是查找區間的最末位置 if((numbera[N-1]))//要查的數不在查找區間內 loca=-1; // 表示找不到 while((!sign)&&(top<=bott)) {mid=(bott+top)/2; if(number==a[mid]) { loca=mid; printf(“Has is %dn”,number,loca+1); sign=1; } else if(number bott=mid-1; else found %d,its position top=mid+1; } if(!sign||loca==-1) printf(“cannot find %d.n”,number);; printf(“continu or not(Y/N)?”); scanf(“ %c”,&c); if(c=='N'||c=='n') flag=0; } return 0; } 10、有一篇文章,共有3行文字,每行有80個字符。要求分別統計出其中英文大寫字母、小寫字母、數字、空格以及其他字符個數。 #include char text[3][80]; upp=low=dig=spa=oth=0; for(i=0;i<3;i++) { printf(“please input line %d:n”,i+1); gets(text[i]); for(j=0;j<80 && text[i][j]!='
主站蜘蛛池模板:
成人18禁深夜福利网站app免费|
中文字幕无码人妻少妇免费|
男女性爽大片在线观看|
国产精品无码久久四虎|
加勒比一区二区无码视频在线|
av色综合久久天堂av色综合在|
风韵丰满熟妇啪啪区老熟熟女|
国产精品麻豆aⅴ人妻|
国产免费午夜福利蜜芽无码|
2020无码专区人妻系列日韩|
亚洲精品综合欧美一区二区三区|
国产成人无码精品久久久露脸|
人妻中文乱码在线网站|
国产免费永久精品无码|
成人精品动漫一区二区|
四虎国产精品永久地址99|
欧美在线三级艳情网站|
观看在线人视频|
开心色怡人综合网站|
人人妻人人澡人人爽欧美一区|
国产精品成人久久久久久久|
97色伦图片97综合影院|
成人欧美一区二区三区|
3d成人h动漫网站入口|
无码av波多野结衣|
日韩精品人成在线播放|
国产精品免费久久久久影院|
欧美xxxx做受欧美1314|
少妇人妻偷人精品一区二区|
av夜夜躁狠狠躁日日躁|
国产成人精品日本亚洲77美色|
无码aⅴ精品一区二区三区浪潮|
亚洲色噜噜网站在线观看|
国产欧美日韩久久久久|
一本大道东京热无码一区|
精产国品一二三产品蜜桃|
av片在线观看|
免费人成网ww555kkk在线|
国产成人av区一区二区三|
天天做天天爱天天综合网2021|
国产精品嫩草影院一二三区入口|