当前位置:文档之家› 清华大学c语言教程课后答案

清华大学c语言教程课后答案

c语言程序设计答案---潭2《C语言程序设计教程(第二版)》习题答案说明1. 本习题答案是我自己做的,错误和疏漏在所难免。

编程题全部调试通过,但选择题和填空题不敢保证全对。

2. 凡未指明解题所用的程序设计语言的,均指C语言。

3. 凡未指明执行程序所需的操作系统的,均可在DOS下执行。

4. 本文中文字下面划线的表示输入。

第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。

递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。

*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f",x);}执行结果:1.32471795725.源程序略。

(分子、分母均构成斐波那契数列)结果是32.660260798646.源程序:main(){int a,b,c,m;printf("Please input a,b and c:");scanf("%d %d %d",&a,&b,&c);if(a<b){m=a;a=b;b=m;}if(a<c){m=a;a=c;c=m;}if(b<c){m=b;b=c;c=m;}printf("%d %d %d",a,b,c);}执行结果:Please input a,b and c:123 456 789789 456 1237.源程序:main(){int a;scanf("%d",&a);printf(a%21==0?"Yes":"No");}执行结果:42Yes第2章 C语言概述一、单项选择题(第34页)1-4.BDCB 5-8.AABC二、填空题(第35页)1.主2.C编译系统3.函数函数4.输入输出5.头6. .OBJ7.库函数8.文本三、应用题(第36页)5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

8.源程序:main(){int a,b,c;scanf("%d %d",&a,&b);c=a;a=b;b=c;printf("%d %d",a,b);}执行结果:12 3434 12第3章数据类型与运算规则一、单项选择题(第75页)1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD21-25.ADDBC 26-27.AB二、填空题(第77页)1.补码2.±(10-308~10308)3.int(整数)4.单目自右相左5.函数调用6.a或b 7.1 8.65,89三、应用题(第78页)1.10 92.执行结果:11121第4章顺序结构程序设计一、单项选择题(第90页)1-5.DCDAD 6-10.BACBB二、填空题(第91页)1.一;2. 5.1690003.(1)-2002500 (2)I=-200,j=2500 (3)i=-200j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10 .a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不再定义中间变量。

)三、编程题(第92页)1.仿照教材第27页例2-1。

2.源程序:main(){int h,m;scanf("%d:%d",&h,&m);printf("%d",h*60+m);}执行结果:9:235633.源程序:main(){int a[]={-10,0,15,34},i;for(i=0;i<=3;i++)printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}执行结果:-10℃=14°F0℃=32°F 15℃=59°F34℃=93.2°F 4.源程序:main(){double pi=3.14159265358979,r=5;printf("r=%lg A=%.10lf S=%.10lf",r,2*pi*r,pi*pi*r);}执行结果:r=5 A=31.4159265359 S=49.34802200545.源程序:#include "math.h";main(){double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);if (a+b>c&&a+c>b&&b+c>a){double s=(a+b+c)/2;printf("SS=%.10lf",sqrt(s*(s-a)*(s-b)*(s-c)));}else printf("Data error!");}执行结果:4 5 6SS=9.92156741656.源程序:main(){int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56; printf("a=%3d,b=%-4d,c=**%dd=%ge=%6.2ff=%-10.4f**",a,b,c,d,e,f);}7.源程序:main(){int a,b,c,m;scanf("%d %d %d",&a,&b,&c);m=a;a=b;b=c;c=m;printf("%d %d %d",a,b,c);}执行结果:5 6 76 7 58.源程序:main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);printf("average of %d,%d and %d is %.2f",a,b,c,(a+b+c)/3.);执行结果:6 7 9average of 6,7 and 9 is 7.339.不能。

修改后的源程序如下:main(){int a,b,c,x,y;scanf("%d %d %d",&a,&b,&c);x=a*b;y=x*c;printf("a=%d,b=%d,c=%d",a,b,c);printf("x=%d,y=%d",x,y);}第5章选择结构程序设计一、单项选择题(第113页)1-4.DCBB 5-8.DABD二、填空题(第115页)1.非0 02.k==03.if (abs(x)>4) printf("%d",x);else printf("error!");4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%。

)6. 8! Right!117.$$$a=08.a=2,b=1三、编程题(第116页)1.有错。

正确的程序如下:main(){int a,b,c;scanf("%d,%d,%d",&a,&b,&c);printf("min=%d",a>b?b>c?c:b:a>c?c:a);}2.源程序:main(){unsigned long a;scanf("%ld",&a);for(;a;printf("%d",a%10),a/=10);}执行结果:12345543213.(1)源程序:main(){int x,y;scanf("%d",&x);if (x>-5&&x<0)y=x;if (x>=0&&x<5)y=x-1;if (x>=5&&x<10)y=x+1;printf("%d",y);}(2)源程序:main(){int x,y;scanf("%d",&x);if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;else y=x-1; else y=x;printf("%d",y);}(3)源程序:main(){int x,y;scanf("%d",&x);if(x<10) if(x>=5)y=x+1;else if(x>=0)y=x-1;else if(x>-5)y=x;printf("%d",y);}(4)源程序:main(){int x,y;scanf("%d",&x);switch(x/5){case -1:if(x!=-5)y=x;break;case 0:y=x-1;break;case 1:y=x+1;}printf("%d",y);}4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。

相关主题