C语言程序设计(第二版)习题参考答案1 下载本文

2,5 1,5

3.

#include void main() {

int a, b; a=8; b=7;

a=(a-- ==b++)? a%3 : a/3; printf(\}

解:a=2 b=8 六、程序填空题。

1.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。例如输入1 2 3,输出a=2 b=3 c=1。 #include void main()

{ int a,b,c, ① ;

printf(“Enter a,b,c:”); scanf(“%d%d%d”, ② ); ③ ; a=b; b=c; ④ ;

printf(“a=%d b=%d c=%d\\n”,a,b,c); }

解:① t ② &a,&b,&c ③ t=a ④ c=t

2.以下程序不借助任何变量把a、b中的值进行交换。 #include void main() { int a,b;

printf(“Input a,b:”); scanf(“%d%d”, ① );

a+= ② ; b=a- ③ ; a- = ④ ; printf(“a=%d b=%d\\n”,a,b); }

解:① &a,&b ② b ③ b ④ b 七、编程题。

1.输入3个字符后,按各字符ASCII码从小到大的顺序输出这些字符。 解:#include void main()

{ char c1,c2,c3,t,min,mid,max;

c1=getchar(); c2=getchar(); c3=getchar(); min=(t=c1

8

max=(t=c1>c2?c1:c2)>c3?t:c3; mid=c1+c2+c3-min-max; putchar(min); putchar(mid); putchar(max);

}

2.输入两点坐标(x1,y1)、(x2,y2),计算并输出两点间的距离。 解:#include

#include void main() {

double x1,y1,x2,y2,d;

printf(“请输入两点坐标 (x1,y1),(x2,y2)\\n”); scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2); d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf(“两点间距离=%f\\n”,d); }

3.编写程序,计算球体积并输出它的值。要求输入半径值,计算结果保留三位小数。 解:#include #include #define PI 3.1415926 void main() { double r,gv;

printf(“请输入半径值:\\n”); scanf(“%lf”,&r); gv=4.0/3*PI*pow(r,3);

printf(“半径为%f的球的体积为:%.3f\\n”,r,gv);

}

4.输入三角形的底和高,求三角形面积。

解:#include #define PI 3.14159 void main() {

double a,h,s;

printf(“请输入三角形的底,高\\n”); scanf(“%lf,%lf”,&a,&h); s=a*h/2;

printf(“三角形面积=%f\\n”,s);

}

5.编写程序,输入一个实数后输出该数的绝对值。

解:#include void main() {

double x,y;

9

printf(“请输入一个实数\\n”); scanf(“%lf”,&x); y=x>=0?x:-x;

printf(“|%g|=%g\\n”,x,y); }

6.输入梯形的上底、下底和高,求梯形面积。

解:#include void main() {

double a,b,h,s;

printf(“请输入梯形的上底,下底,高\\n”); scanf(“%lf,%lf,%lf”,&a,&b,&h); s=(a+b)*h/2;

printf(“ 梯形面积=%f\\n”,s); }

7. 输入矩形的边长,求矩形面积。

解:#include void main() {

double a,b,s;

printf(“请输入矩形的长,宽\\n”); scanf(“%lf,%lf”,&a,&b); s=a*b;

printf(“ 矩形面积=%f\\n”,s); }

8. 已知等差数列的第一项为a,公差为d,求前n项之和,a、d、n由键盘输入。

解:#include void main() {

int a,d,n,sum;

printf(“请输入等差数列的首项 公差 项数\\n”); scanf(“%d%d%d”,&a,&d,&n); sum=a*n+n*(n-1)*d/2;

printf(“ sum=%d\\n”,sum); }

9. 编写程序,将d天h小时m分钟换算成分钟,输入d、h、m,输出换算结果。

解:#include void main() {

int d,h,m,t;

printf(“请输入天 小时 分钟\\n”); scanf(“%d%d%d”,&d,&h,&m); t=d*24*60+h*60+m;

printf(“%d天%d小时%d分钟=%d分钟\\n”,d,h,m,t); }

10

10. 编写程序,求出给定半径r的圆以及内接正n边形的面积,输出计算结果。r和n的值由键盘输入。

解:#include #include #define PI 3.14159 void main() {

double r,s1,s2; int n;

printf(“Input r n\\n”); scanf(“%lf%d”,&r,&n); s1=PI*r*r;

s2=n/2.0*r*r*sin(2*PI/n);

printf(“圆面积=%f,正内接%d边形面积=%f\\n”,s1,s2); }

习 题 4

一、单项选择题

1.下列语句将小写字母转换为大写字母,其中正确的是( )。

A.if(ch>='a'&ch<='z')ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32; C.ch=(ch>='a'&&ch<='z')?ch-32:' '; D.ch=(ch>'a'&&ch<'z')?ch-32:ch;

2.下列各语句中,能够将变量u、s中最大值赋给变量t的是( )。

A.if(u>s)t=u;t=s; B.t=s;if(u>s)t=u; C.if(u>s)t=s;else t=u D.t=u;if(u>s)t=s;

3.假设变量x、k都已定义,下列语句片段中,无语法错误的是( )。

A. switch(x){

case x>=90: putchar('A'); case x<60: putchar('E'); }

B. switch(x) {

case 1+2: k='A'; defualt: k='E'; case 2*4: k='B'; }

C. switch(x){

case 2+x: k=x-2; case 3*x: k=x+3; default: k=0; }

D. switch(x){

case 3.5: k=0.5*x; case 7.8: k=8*x; default: k=0; }

*4.与语句while(!s )中的条件等价的是( )。

11