谭浩强编著的《C语言程序设计》第二版的习题答案.doc

上传人:啊飒飒 文档编号:10979416 上传时间:2021-06-14 格式:DOC 页数:17 大小:73.50KB
返回 下载 相关 举报
谭浩强编著的《C语言程序设计》第二版的习题答案.doc_第1页
第1页 / 共17页
谭浩强编著的《C语言程序设计》第二版的习题答案.doc_第2页
第2页 / 共17页
谭浩强编著的《C语言程序设计》第二版的习题答案.doc_第3页
第3页 / 共17页
谭浩强编著的《C语言程序设计》第二版的习题答案.doc_第4页
第4页 / 共17页
谭浩强编著的《C语言程序设计》第二版的习题答案.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《谭浩强编著的《C语言程序设计》第二版的习题答案.doc》由会员分享,可在线阅读,更多相关《谭浩强编著的《C语言程序设计》第二版的习题答案.doc(17页珍藏版)》请在三一文库上搜索。

1、4-5原题:打印出下题的结果main()?int a=5,b=7;。结果:575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.856400,-789.124023,67.856400,-789.1240236.78564e+01, -7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM4-6原题:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,。答案:输入格式为:a=3,b=7 8.5 71.82 A a4-7原

2、题:用下面的scanf函数输入数据使。输入格式为:10 20Aa1.5 -3.78 0.0,67.8友情提示:10与20之间是3个空格,而那个0.0是随便一个浮点数即可。 4-8原题:设圆半径r=1.5,圆柱高h=3,求。#define PI 3.1415926main()int h;float r;float cubage1,cubage2,per,area,facearea;printf(please input the circles radiin);scanf(%f,&r);printf(please input the cylinders heightn);scanf(%d,&h);

3、per=2*PI*r;area=PI*r*r;facearea=4*PI*r*r;cubage1=4/3*PI*r*r*r;cubage2=area*h;printf(nntThe circles perimeter is %.2fn,per);printf(tThe circles area is %.2fn,area);printf(tThe spheres facearea is %.2fn,facearea);printf(tThe spheres cubage is %.2fn,cubage1);printf(tThe cylinders cubage is %.2fn,cubage

4、2); 4-9原题:输入一个华氏温度,要求输出摄氏温度。公式为 c=(F-32)*5/9. main()float temper;float c;printf(Please input the temperature of Fahrenheitn);scanf(%f,&temper);c=(temper-32)*5/9;printf(The Celsius temperature is %.2f,c); 4-10原题:编程序,用getchar()函数读入两个字符给c1,c2,。main()char c1,c2;c1=getchar();c2=getchar();printf(n);putcha

5、r(c1);putchar(c2);printf(c1=%c,c2=%c,c1,c2);(1)都可;(2)用printf()函数;(3)不可以,必须是整形变量的值在256以内,否则则超过了ASCII的值。 5-4原题:有三个整数a,b,c,由键盘输入,输出其中最大得数: main() int a,b,c,d;printf(please input 3 num, the format is 1 2 3n);scanf(%d%d%d,&a,&b,&c);d=max(a,max(b,c);printf(the max number is %dn ,d);int max(int x,int y) in

6、t z;z=(xy)?x:y;return(z);5-5原题: 以下面的方程为基础,写一程序,输入X值输出Y值,方程如下。main() int x,y,a;printf(please input the value of x );/*输入X的值*/scanf(%d,&x);printf(the value of y is: );/*分条件打印出y值*/if(x=1&x10) y=2*x-1;printf(%d,y);else y=3*x-11;printf(%d,y); 5-6原题: 给出一百分制成绩,要求输出成绩等级。main() int num ;loop: printf(please i

7、nput the score:n );scanf(%d,&num);if(num100) printf(the score is error,please input a number from 0-100n );goto loop;elseif(num=90)num=65;elseif(num=80)num=66;elseif(num=70)num=67;elseif(num=60)num=68;elsenum=69;printf(the level is :);switch(num) case 65: printf(%c,num);break;case 66: printf(%c,num)

8、;break;case 67: printf(%c,num);break;case 68: printf(%c,num);break;case 69: printf(%c,num);break;5-7原题: 给一个不多于5位的正整数,要求:(1)求出它是几位数,(2)。main() long num;int k;loop: printf(please input a num form 0-99999:n);scanf(%ld,&num);if(num99999)printf(the number is error );goto loop;/*利用GOTO语句来检查输入的数字是否位5位*/pri

9、ntf( the answer one is: the long of the number is: );if(num=10000) k=5;printf(%d,k);elseif(num=1000) k=4;printf(%d,k);elseif(num=100) k=3;printf(%d,k);elseif(num=10) k=2;printf(%d,k);else k=1;printf(%d,k);printf(n the answer two is :);switch(k) case 1: printf(%5ld,num);break;case 2: printf(%5ld %5ld

10、,num/10,num%10);break;case 3: printf(%5ld %5ld %5ld,num/100,num%100/10,num%10);break;case 4: printf(%5ld %5ld %5ld %5ld,num/1000,num%1000/100,num%100/10,num%10);break;case 5: printf(%5ld %5ld %5ld %5ld %5ld,num/10000,num%10000/1000,num%1000/100,num%100/10,num%10);break;printf(nthe answer three is: )

11、;switch(k) case 1: printf(%ld,num);break;case 2: printf(%ld%ld,num%10,num/10);break;case 3: printf(%ld%ld%ld,num%10,num%100/10,num/100);break;case 4: printf(%ld%ld%ld%ld,num%10,num%100/10,num%1000/100,num/1000);break;case 5: printf(%ld%ld%ld%ld%ld,num%10,num%100/10,num%1000/100,num%10000/1000,num/10

12、000);break;5-8原题:企业发放的奖金根据利润提成。利润低于或等于10万的,奖金。main() long i;int bonus,bonus1,bonus2,bonus4,bonus6,bonus10;printf(nnPlease input the bonus of this month:n);scanf(%ld,&i);clrscr();printf(nn This month bonus is );bonus1=100000*0.1;bonus2=bonus1+100000*0.075;bonus4=bonus2+200000*0.05;bonus6=bonus4+20000

13、0*0.03;bonus10=bonus6+400000*0.015;if(i=100000)bonus=bonus1;elseif(i=200000)bonus=bonus1+(i-100000)*0.075;elseif(i=400000)bonus=bonus2+(i-200000)*0.05;elseif(i=600000)bonus=bonus4+(i-400000)*0.03;elseif(iy)?y:x;return(z);max(int x, int y) int z;z=(xy)?x:y;return(z);5-10原题 : 有4个圆塔,圆心分。#include /*数学函数

14、头文件,用来调用fabs()和sqrt()函数*/main() int h;float w,x,y,j,i,k;printf(please input the zuobiao,for example:1,2n);scanf(%f,%f,&x,&y);if(x=3|x=3|yn,如果m能被n整除,那么n就为他们的最小公约数,如果不能整除,那么余数为c,然后令m=n,n=c,继续上面的步骤,直到m能被n整除为止,那时的n就为他们的最小公约数,而最小公倍数则为m和n的乘机在除以他们的最小公约数的值main() int m,n,c,h,mm,nn;printf(please input two num

15、bers:n );scanf(%d %d,&m,&n);mm=m;nn=n;if(mn);elseh=m;m=n;n=h;c=m%n;if(c=0)printf(the gong yue shu is %d:,n);elsewhile(c!=0) m=n;n=c;c=m%n;printf(the gong yue shu is %d:,n);printf(the gong bei shu is %d:,mm*nn/n); 6-2原题 : 输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数main() char a=a;int i,ch=0,num=0,space=0,other=

16、0;printf(please input a line string: n);for(i=0;a!=n;i+)a=getchar();if(a= )space+;elseif(isalpha(a)ch+;elseif(isdigit(a)num+;elseother+;printf(nthe char have %d,ch);printf(nthe number have %d,num);printf(nthe space have %d,space);printf(nthe other have %d,other-1); 6-3原题 : 求Sn=a+aa+aaa+aaa之值,n由键盘输入#

17、includemain() long int a=1,s=0,b=0;int n,j;printf(please input a number:n);scanf(%d,&n);for(j=0;j=n-1;j+)b=b+a*pow10(j);s=s+b;printf(%8ld,s);6-4原题: 求1!+2!+3!+.+20! double tt(int n) int j;double k=1;for(j=1;j=n;j+)k=k*j;return(k);main() double s=0.;int n=4,j;for(j=1;j=n;j+) s=s+tt(j); printf(%.0f,s);

18、 6-5原题: 求(1+2+.+100)+(1*1+2*2+.+50*50)+(1/1+.+1/10 */int k(int w) int i=1,j,s=0;for(j=0;jw;j+)s=s+i+;return(s);long int k2(int x) int i=1,j,q;long s=0;for(j=0;jx;j+)q=i;s=s+q*q;i+;return(s);float k1(int i) float k=1,m,s=0;int j;for(j=0;ji;j+)m=1/k;s=s+m;k+;return(s);main() int n1=100,n2=50,n3=10;pri

19、ntf(%dn,k(n1);printf(%ldn,k2(n2);printf(%.2f,k1(n3); 6-6原题: 求出所有的水仙花数 int x3(int x) int i,s=1;for(i=0;i3;i+)s=s*x;return(s);main() int i,g,s,b;for(i=100;i1000;i+)b=i/100;s=i%100/10;g=i%10;if(x3(b)+x3(s)+x3(g)=i)printf(%8d,i);6-7原题:一个数如果恰好等于它的因子之和,。方法一 #infine M 1000 main() int k1,k2,k3,k4,k5,k6,k7,k

20、8,k9,k10; int i,a,n,s; for(a=2;a=m;a+) n=0; s=a; for(i=1;i1)printf(“%d,%d”,k1,k2);if(n2)printf(“,%d”,k3); if(n3)printf(“,%d”,k4);if(n4)printf(“,%d”,k5); if(n5)printf(“,%d”,k6);if(n6)printf(“,%d”,k7); if(n7)printf(“,%d”,k8);if(n8)printf(“,%d”,k9); if(n9)printf(“,%d”,k10);printf(“n”); 方法二: main() int

21、m,s,i; for(m=2;m1000;m+) s=0; for(i=1;im;i+) if(m%I)=0) s=s+i; if(s=m) printf(“%d是一个“完数”,它的因子是”,m); for(i=1;im;i+) if(m%i=0) printf(“%d”,i); printf(“n”); 方法三: main() int k11; int i,a,n,s; for(a=2;a=1000;a+) n=0; s=a; for(i=1;ia;i+) if(a%i)=0) n+;s=s-i;kn=i; if(s=0) printf(“n%d是一个“完数”,它的因子是:”,a); for

22、(i=1;in;i+) printf(“%d,”,ki); printf(“%dn,”,kn); 6-8原题: 有一序数列:2/1,3/2,5/3求前20项的和 main()float k,m=0,i;for(i=1;i=20;i+)k=(i+1)/i;m=m+k;printf(%.2f,m);6-9原题:一球从100M高度自由落下,每次落地后反跳回原。#define N 10main()float s=100,n,num=1;int i,j;n=100;for(j=0;j0) x1=(x2+1)*2; x2=x1; day-; printf(“total=%dn”,x1); 6-12原题:

23、用牛顿迭代法求下面方程在1.5附近的根。2x3-4x2+3x-6=0#includemain()float x,x0,f,f1; x=1.5;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while(fabs(x-x0)=le-5);printf(“The root of equation is %5.2fn”);6-12原题: 用牛顿迭代法求下面方程在1.5附近的根。#includemain()float x,x0,f,f1; x=1.5;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+

24、3;x=x0-f/f1;while(fabs(x-x0)=le-5);printf(“The root of equation is %5.2fn”);6-13原题: 用二分法求下面方程在(-10,10)之间的根。#includemain()float x0,x1,x2,fx0,fx1,fx2;doprintf(“Enter x1 & x2:”);scanf(“%f,%f”,&x1,&x2);fx1=x1*(2*x1-4)*x1+3)-6;fx2=x2*(2*x2-4)*x2+3)-6;while(fx1*fx20);dox0=(x1+x2)/2;fx0=x0*(2*x0-4)*x0+3)-6

25、;if(fx0*fx1)=le-5);printf(“x=%6.2fn”,x0);6-14原题:打印出以下图案。(菱形) main()int i,j,k;for(i=0;i=3;i+)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); 7-1原题: 用筛选法求100以内的素数 #include#define N 101main()int i,j,num=0,a

26、N;printf(the numbers are:n);for(i=2;iN;i+)ai=i;for(i=0;iN;i+)for(j=0;j=sqrt(i);j+)if(ai!=0&aj!=0)if(ai%aj=0)ai=0;for(i=0;iN;i+)if(ai!=0)printf(%4d,ai);num+;if(num%5=0)printf(n); 7-2原题: 用选择法对10个整数排序(从小到大)。main()int i,j,min,temp,a11;printf(“Enter data:”,n);for(i=1;i=10;i+) printf(“a%d=”,i);scanf(“%d”,

27、&ai);printf(“n”);for(i=1;i=10;i+) printf(“%5d”,ai);printf(“n”);for(i=1;i=9;i+)min=i;for(j=i+1;jaj) min=j;temp=ai;ai=amin;amin=temp;printf(“n The sorted numbers:n”);for(i=1;i=10;i+)printf(“%5d”,ai);7-3原题: 求一个33的整型矩阵对角线元素之和。 main()int i,j,a33,s=0;printf(Please input 9 numbers to the array:n);for(i=0;i

28、3;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0,j=0;i3&j3;i+,j+)s=s+aij;printf(the numbers is %d ,s); 7-4原题:有一个已排好序的数组,今输入一个数,要求按排序的规律将它插入数组中。main()int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(“array a:n”);for(i=0;iend)a10=number;elsefor(i=0;inumber)temp1=ai;ai=number;for(j=i+1

29、;j=11;j+)temp2=aj;aj=temp1;temp2=temp1;break;printf(“Now, array a:n”);for(i=0;i=11;i+)printf(“%6d”,ai);7-5原题: 将一个数组中的值按逆序重新存放。 #define N 10main()int tem,i,j;int aN;clrscr();printf(Please input %d numbers :n,N);for(i=0;iN;i+)scanf(%d,&ai);clrscr();printf(the source array is :n);for(i=0;iN;i+)printf(%

30、d ,ai);for(i=0;i(N/2+1);i+)tem=ai;ai=aN-i-1;aN-i-1=tem;printf(nthe new array is :n);for(i=0;iN;i+)printf( %d,ai); 7-6原题:打印出以下杨辉三角形。#define N 11main()int i,j,aNN;for(i=1;i=N;i+)aii=1;ai1=1;for(i=3;i=N;i+)for(j=2;j=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;i=N;i+)for(j=1;j=i;j+)printf(“%6d”,aij);printf(“n”);pr

31、intf(“n”);7-7原题:打印魔方阵。注:此题的调试是在VC6.0的环境下。不过大家可以看看算法。 #include #include #include void showFangzhen(int n);int main()for(int n = 0; n 10; n +)showFangzhen(2*n+1);coutPress enter to quit!;cin.get();return 0;void showFangzhen(int n)if(!(n%2) return;int i,j,*array;/为指针分配动态内存array=new int*n;for(i=0; in; i

32、+)arrayi = new intn;/初始化数组for(i=0; in; i+)for(j=0; jn; j+)array(n-1)/2+i-j+n)%n(3*n-1+j-2*i)%n=i*n+j+1;/输出n阶幻方coutn阶幻方:endl;for(i=0; in; i+)for(j=0;jn;j+)coutsetw(int(log10(n*n)+2)arrayij;coutendl;coutendl;/释放动态内存for(i=0; in; i+)delete arrayi;/原来是 delete arrayi;delete array;7-8原题: 出一个二维数组中的鞍点,。#defi

33、ne N 10#define M 10main()int i,j,k,m,n,flag1,flag2,aNM,max,maxi,maxj;printf(“n 输入行数n:”);scanf(“%d”,&n) printf(“n输入列表m:”);scanf(“%d”,&m);for(i=0;i=n;i+)printf(“第%d行?n”,i);for(j=0;jm;j+)scanf(“%d”,&aij);for(i=0;i=n;i+)for(j=0;jm;j+)printf(“%5d”,aij);printf(“n”);flag2=0;for(i=0;i=n;i+)max=ai0;for(j=0;j

34、max) max=aij;maxj=j;for(k=0;flag1=1;kakmaxj) flag1=0;if(flag1)printf(“n第%d行,第%d列的%d是鞍点n”,i,maxj,max);flag2=1;if(!flag2)printf(“n矩阵中无鞍点!n”);7-9原题: 有15个数按由大到小的顺序存放在一个数组中,输入。#include#define N 15main()int i=1,j,number,top,bott,mid,loca,aN,flag=1,sign=1;char c;printf(“Enter data:n”);scanf(“%d”,&a0;while(

35、i=ai-1) i+;elseprintf(“Enter this data again:”);printf(“n”);for(i=0;iN;i+)printf(“%4d”,ai);printf(“n”);flag=1;while(flag)printf(“Imput number to look for:”);scanf(“%d”,&number);loca=0;top=0;bott=N-1;if(numberaN-1)loca=1;while(sign=1)&(top=bott)mid=(bott+top)/2;if(number=amid)loca=mid;printf(“Find %d,its position is %d n”,number ,loca+1);sign=0;elseif (number

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1