搜索
您的当前位置:首页正文

《C语言程序设计》(清华大学出版社)书后习题参考答案

来源:二三四教育网
第一步部分 简单程序设计 P5

5.课堂实践 (1)

#include main()

{ printf(“**********\\n”); printf(“**********\\n”); printf(“**********\\n”); } (2)

#include main<> /*main()*/ {

printf(“Hello,World.\\n); } P9

5.课堂实践 (1)

#include main() {

char a=116,b=119,temp; printf(“a=%c,b=%c\\n”,a,b); temp=a; a=b; b=temp;

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

(2)功能:交换x,y的值; #include

main() { int x,y; x=5; y=10; x=x+y; y=x-y; x=x-y;

printf(“%d,%d”,x,y); }

(3)c:dec=120,oct=170,hex=78,ASCLL=x 4、输出内容向左靠齐 12 12

3.14159260000000000000000000000000 3.14159260000000000000000000000000 P11

5.课堂实践 (1)

①3.0-(3.0*4)/(4+2) #include main() { float x;

x=3.0-(3.0*4)/(4+2); printf(“%f”,x); }

②1/2*(2*3+2/(2*2*2)) #include main() { float x;

x=1/2*(2*3+2/(2*2*2)); printf(“%f”,x); }

(2)% (3)B (4)

#include<stdio. h> main {

x,y,z;/*没有数据类型*/ x+y=5;/*赋值表达式左边不能是表达式,应为一个变量*/

printf(\"x+y=,z=\",x,y,z);/*没有输入格式符*/

} P13

5.课堂实践 (1)-14

(2)(1)x=4,8 (2)8,8 (3)

#include mian() { int x=10;

printf(“当x变量的初值为%d时,进行+=运算后的结果为%d”,x,x+=x);

printf(“当x变量的初值为%d时,进行-=运算后的结果为%d”,x,x-=x);

printf(“当x变量的初值为%d时,进行*=运算后的结果为%d”,x,x*=x);

printf(“当x变量的初值为%d时,进行/=运算后的结果为%d”,x,x/=x);

} P13 习题

一、

1、C 2、C 3、A 二、 5,-4 6,12,20 P18

5.课堂实践 (1)

#include main() { int x,y;

scanf(“%d%d”,&x,&y); if(x>y)

printf(“x>y”); else if(xprintf(“x=y”); } (2)

#include main() { int x,y; scanf(“%d”,&x); if(x>0) y=1; if(x==0) y=0; if(x<0) y= -1; printf(%d”,y); } P21

5.课堂实践

(1)C (2)B (3)B (4)0.500000 scanf(\"%d\(5)不能: #include main( ) {

int x,y,z,max; if(z>y) {if(z>x) max=z; else max=x;} else if (y>x) max=y; else max=x;

printf(\"\\nmax=%d \} P23 略 P24 习题

一、1、D 2、D 3、C 4、D 5、B 6B 7、B

二、1、y%2==0 2、&& || ! 3、(x>2&&x<3)||(x<-10) 4、(ch>=’A’&&ch<=’z’) ch=ch-32;

5、1,0 6、F 三、 1、

#include main() {int a;

if(a%5==0&&a%7==0)

printf(\"yes\");

else printf(\"no\"); }

2、

#include main() {int m;

scanf(\"qingshuru:%d\

if((m%4==0&&m%100!=0)||m%400==0) printf(\"%d shirunnian\ else printf(\"%d bushirunnian\} 3、

#include #include 、main() { float

a,b,c,dise,x1,x2,realpart,imagpart;

scanf(“%f%f%f”,&a,&b,&c); printf(“The equation”); if(fabs(a)<=0)

printf(“is not a quadratic\\n”); else

{ dise=b*b-4*a*c; if(dise<=0)

printf(“has two aqual roots:%8.4f\\n”,-b/(2*a));

else

if(dise>0)

{ x1=(-b+sprt(disc))/(2*a); x2=(-b-sprt(disc))/(2*a);

printf(“has distinct real roots:%8.4f (ch-key));

} (2)

and%8.4f\\n”,x1,x2);

} else {

realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a); printf(“has complex roots:\\n”); printf(“%8.4f+%8.4f\\n”,realpart,imagpart);

printf(“%8.4f-%8.4f\\n”, realpart,imagpart);

} P28 5、课堂实践 (1)

#include main( ) { int key; char ch;

printf(\"*****\\n\"); scanf(\"%d\printf(\"????????:\\n\"); while((ch=getchar())!='\\n') (ch-key)>122?putchar(ch+122-33-key):((ch-key)<33?putchar(ch-122-key):putchar

#include main()

{ int i; /*i没有赋值*/ int i=1;

printf(“output ten numbers:\\n”); while(i<=10)

printf(“%3d”);/*没有输出参数*/

{printf(“%3d”,i);

i++; /*应加{}组成复合语句*/ i++;}

} P30

4. 课堂实践 (1)

#include main() { int a,s=0; do

{ scanf(“%d”,&a); s+=a; }

while(a!=-1); printf(“%d”,s); } (2)

#include

main()

{ int a,b,r,t,maxB; scanf(“%d%d”,&a,&b); if(a{ t=a;a=b;b=t;} r=a%b; while(r!=0) { a=b;b=r;r=a%b;} maxB=b;

printf(“maxB is %d”,maxB); } P33

6. 课堂实践 (1)4 (2) ①

#include main() { int i,j;

printf(\"**九九乘法表**\");

for(i=1;i<10;i++) { for(j=1;j<=i;j++) printf(\"%d*%d=%d\\

printf(\"\\n\");

} } ②

#include main()

{

int i=1,j;

while(i<10) { j=1; while(j<=i)

{ printf(\"%d*%d=%d\\

j++;} printf(\"\\n\"); i++;

} } ③

#include main() {

int i=1,j; do { j=1; do

{ printf(\"%d*%d=%d\\

j++;

}

while(j<=i); printf(\"\\n\");

i++; }

while(i<10); } (3)

#include main() { int x; scanf(\"%d\while(x>0)

{ printf(\"%d\

x/=10;

prtntf(\" \"); } } P33

习题【参考答案】

一、1、D 2、C 3、A 4、A 5C 7、D 8、D 9、C 10、B

二、1、36 2、3 4、1 3 5if(j%6!=0)

三、 1、

#include main() {int a,sum=0;

for(a=1;a<=100;a++)

、D 6、、 i<=10 if(a%2==1)

sum=sum+a;

printf(\"%d\ }

2、

#include main()

{ int i,j,s; int t;

int k[100];

for(i=1;i<=1000;i++) { s=0;t=0;

for(j=1;jif(i%j==0)

{s+=j;k[t++]=j;} if(i==s) {

printf(\"%d shi

wanshou %d=\

for(;t>0;)

if(t>1)

printf(\"%d+\

else printf(\"%d\

printf(\"\\n\");}

} 3、

#include main() { int y,t=0;

for(y=1008;y<=2008;y++) if(y%4==0&&y%100!=0||y%400==0) { printf(“%d\”,y); t++; if(t%5==0) printf(“\\n”); } } 4、

#include main()

{ int t,i,x,max,min; scanf(“%d”,&t); max=min=t; for(i=1;i<10;i++) {scanf(“%d”,&x); if(max<=x) max=x; if(min>=x) min=x;}

printf(“%d\%d\\n”,max,min); } 5、

#include main()

{ int i,j,p; for(i=1;i<=4;i++) { for(p=1;p<=i;p++) printf(“ ”); for(j=7;j>=2*i-1;j--) printf(“*”);

printf(“\\n”); } } P39 5.课堂实践

(1)float compare (float a,b,c) {

float k; if (a>=b) { k=a; if(a>=c) k=a; else k=c; } else { k=b; if(b<=c) k=c;

return k; } }

(2)最大公约数: int zxgys (int m,n) {

int i,j,k; if(m>=n) k=n; else k=m;

for(i=1;i<=k;i++) {

if(m%i==0&&n%i==0) j=i; } return j; }

最小公倍数:

int zdgbs (int a,int b) {

int x,y,k; if(a>=b) k=a; else k=b;

for(x=a*b;x>=k;x- -) {

if(x%a==0&&x%b==0) y=x; }

return y; }

P41 课堂实践 (1)

#include

float zhouchang (float x) { float l; l=2*3.14*x; return l; }

float mianji (float y) { float s; s=3.14*y*y; return s; }

voide main () { float r; scanf(\"%f\float m,n; m=zhopuchang (r); n=mianji (r);

printf(\"m=%f\\nn=%f\\n\} (2)

float add (float x,float y) { Float z; Z=x+y; Return z; }

float sub(float h,float k) {float w; w=h-k; return w; }

float mul(float m,n) {float i; i=m*n; return i;

}

float div(float e,f) {float g; g=e/f; return g; }

void main() {float p,g;

scanf(\"%f%f\char a;l scanf(\"%c\float j; if(a=='+') {j=add(p,g); }

else if(a=='-') {j=sub(p,g) }

else if (a=='*') {j=mul(p,g) }

else if (a=='/') {j=div(p,g) }

printf(\"'%f\} P43 习题 一.选择

1.B 2.D 3.D 4.A 5.C 6.B 7.B 8.B 9.A 10.D 二.填空

1.函数首部和函数体 2.void add; float add; 3.1,1,1 4. 1,2,3;

5. break; scanf(“%c”,&ch); 6. x=4 y=9 z=5 7.first:14 ,4 ,12 second:26 ,4 ,12 third:26 ,3 ,6 8. a+b=9 9. 8 10. 125 三. 1.

#include #include fun (int x,int y) { int m; m=x-y; m=abs(m); return m; }

2. void deb (int x) { int i;

for(i=2;i<=x;i++) {

if(x%i==0)

break; } if(i>=x)

printf(\"%d is su shu\\n\} 3. 略

第二部分 程序设计算法示例 P67 6.(1)

#include main() {int b,m,l; for(b=1;b<20;b++) {for(m=1;m<33;m++) {l=100-m-b;

if(5*b+3*m+l/3==100) printf(\"%d%d%d\\n\ } } }

(2) #include main() {int a,b,c,d; for(a=1;a<10;a++) {for(b=1;b<20;b++) { for(c=1;c<50;c++) {d=40-a-b-c;

if(10*a+5*b+2*c+d==100)

printf(\"%d,%d,%d,%d\\n\

} } } } P70 5.(1)

#include main() {int a,b,c; c=2;

for(a=2;a<=3;a++) {if(a==c) continue; b=6-a-c; if(b==c) continue; if(a==3)

printf(\"a与z是对手\\n\");

if(b==1)

printf(\"b与x是对手\\n\"); printf(\"c与y是对手\\n\"); } }

5.(2)

#include main () {

int d=5; int a,b,c,e,f,g; for(a=1;a<=7;a++) { if(a==d) continue; for(b=1;b<=7;b++) {

if(b==a||b==d) continue; for(c=1;c<=7;c++) { if(c==a||c==b||c==d)

continue; for(e=1;e<=7;e++)

{ if(e==a||e==b||e==c||e==d)

continue;

for(f=1;f<=7;f++)

{

if(f==e||f==d||f==c||f==b||f==a)

continue;

g=(23-a-b-c-e-f);

if(g==f||g==e||g==d||g==c||g==b||g==a)

continue;

}

} } } }

printf(\"a=%d\\nb=%d\\nc=%d\\nd=%d\\ne=%d\\nf=%d\\ng=%d\\n\

}

5.(3) 略 P71 习题 一、 1. B 2. D 3. C 4. C,D 二.

1.2*x+4*y==90;

2.14 三. 1.

#include main () {

int a,b,c; for(a=1;a<=9;a++) {

for(b=0;b<=9;b++) {

for(c=0;c<=9;c++) {

printf(\"%d%d%d\\n\; } } } } 2

#include main () {

int bh,mh,lh; for(bh=1;bh<=40;bh++) {

for(mh=1;mh<=50;mh++) {

lh=100-bh-mh; if(3*bh+2*mh+lh/2)

printf(\"bh=%d\\nmh=%d\\nlh=%d\\n\");

} } } P75 5.

#include main () {

float x1,x2; x1=1.5; x2=(x1+1/x1)/2; while(x1=x2) {x1=x2; x2=(x1+1/x1)/2; }

printf(\"%f\} P76

5.(1) 略 5.(2)

#include main () {

int day=1; int x1=0,x=0; float j; while(x1<100)

if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)

{ x=day*2; day++; x1+=x; }

j=x1*0.8/(day-=1); printf(\"%f\} P76 习题 一 1.(1)B (2)D

2. (1)C (2)A 二

1.(1)x1==0 (2) x/0.5-2 2.sum%4==0 三 略 P80. 5、课堂实践 #include void main() { long int f1,f2; int i; f1=1; f2=1; for(i=1;i<=20;i++)

{printf(“%4ld %4ld”,f1,f2); if(i%2==0) printf(“\\n”); f1=f1+f2;

f2=f2+f1; } } P81. 5、课堂实践 #include #include int s(int a,int b) { int g; if( b= =0) g=1; else g=pow(a,b); return(g); } main() { int x,y,m;

Scanf(“%d,%d”,&x,&y); m=s(x,y); printf(“%d”,m); } P81.习题 一、

1、(1) age(n-1)+2 (2)age(n) 2、计算Fibonacci数列第7项元素二、略 P85.略 P93. 5、课堂实践

(1) D (2) C (3) C (4)D (5)

#include

k=13 main()

{ int a[5],s[5]; int i;

for(i=0;i<5;i++) scanf(“%d”,&a[i]); for(i=0;i<5;i++) { s[i]=a[i]+5; printf(“%d”,s[i]); } } P96. 5、课堂实践 (1)

#include void main() { int

a[10]={265,301,751,129,937,863,742,694,76,438};

int i,j,t; for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; }

for(i=0;i<10;i++) printf(“%d ”,a[i]); }

(2).补充直接插入排序原理。程序略 3.

#include #define N 10 void main() {int

a[10]={265,301,751,129,937,863,742,694,76,438};

int i,j,t,k; for(i=0;ifor(j=i+1;jt=a[k];a[k]=a[i];a[i]=t; }

for(i=0;i(1) C (2) D (3) C (4)

#include void main()

{ int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2], i,j; printf(“array a:\\n”); for(i=0;i<2;i++) { for(j=0;j<3;j++)

{ printf(“%3d”,a[i][j]); b[j][i]=a[i][j]; }

printf(“\\n”); }

printf(“array b:\\n”); for(i=0;i<3;i++) { for(j=0;j<2;j++) printf(“%3d”,b[i][j]); printf(“\\n”;) } }

P99. 习题 一.

(1) B (2) C (3) D (4) D (5) D (6) C (7) D (8) B (9) B (10) A 二.

1.按行存放 2. 2 0 3. 0 6

4.&a[i] i%4= =0 printf(“\\n”); 5. 1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0 0 0 0 0 1

三.

1.#include #define N 10 void main() {

int a[N],i ,t; for( i=0;iprintf(“array a:\\n”); for(i=0;iprintf(“\\n now,array a:\\n”); for(i=0;i#include void main() {

int a[10], b[9] ,i; for( i=0;i<10;i++) scanf(“%d”,&a[i]); for( i=0;i<9;i++) b[i]=a[i+1]/a[i]; for( i=0;i<9;i++) { if(i%3= =0) printf(“\\n”); printf(“%3d”,b[i]); } } 3.

#include void main()

{int

a[10]={68,97,64,52,69,78,98,73,89,53}

int i, max=a[0],t,s=0; float ave; for(i=1;i<10;i++) if(maxprintf(“%d\\n”,t); for(i=0;i<10;i++) s+=a[i]; ave=s/10;

printf(“%f”,ave);} 4.

#include void main() { int a[3][3]; int i,j, sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<3;i++) sum=sum+a[i][i]; printf(“%d”,sum); } 5.

#include void main() {int i,j,max;

int a[3][4],m=0,n=0; for(i=0;i<3;i++)

for(j=0;j<4;j++) scanf(“%d”,a[i][j]); max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) {if(maxprintf(“m=%d,n=%d,max=%d”,m,n,max)

;

} } P105 5.课堂实践

(1)B (2)B (3)B (4)C P108 5.课堂实践 (1)D (2) D (3)A (4)

#include “stdio.h” #include “conio.h” main() {

int n1,n2,n3; int *p1,*p2,*p3; printf(“please input3 number:n1,n2,n3:”);

scanf(“%d,%d,%d”,&n1,&n2,&n3): p1=&n1; p2=&n2;

p3=&n3;

if(n1}

swap(p1,p2) int *p1,*p2;

{int p;p=*p1;*p1=*p2;*p2=p;} (5)略 P109 习题: 一、

1、B 2、B 3、B 4、B ((fun(x,y);应为change(x,y)) 5、D

二、

1、地址、变量 2、a=0 b=3 3、4 12 4、2 5、*(x+i) *&x[i] *(&x[0]+i)

6、25 三、略 P112 4、课堂实践 (1)ab (2)D p115 5、课堂实践

(1)C (2)D (3)A

(4)9 字符串\"ab\\n\\\\012\\\\\\\"的长度是 9 。

(勘误:将\"ab\\n\\\\012\\\\\\\"改为--”ab\\n\\\\012\\\\\\\\”)

(5)400,

(6)略 P117 5、课堂实践 (1)A (2)D (3)4,1 P118习题

一、(1)B (2)C (3)C (4)D (5)B (6)C 二、1、hELLO! 2、bcdABCD 3、def 4、*2*4*6*8

三、略 P125 5、课堂实践

(1)A (2)C (3)D (4)略 P127 4、课堂实践

(1)70 (2)D (3)B P130 5、课堂实践

(1)C (2)C (3)B (4)D P133 5、课堂实践 (1)97 (2)D P133 习题

一、(1)A (2)C (3)C (4)C (5)B 二、(1)10,4 (2)10,x (3)<3 old=p->age q->name,q->age

三、(略) P151 4.课堂实践 (1)B (2)C P152 4.课堂实践

(1)二进制 文本文件(或 ASCLL文件) (2)n-1 (指针)首地址 P152 习题

一、 1、C 2、A 3、A 二 、 略

任务14中相关习题均摘自计算机等级考试上机部分,读者可自行查阅相关内容。

因篇幅问题不能全部显示,请点此查看更多更全内容

热门图文

Top