tceic.com
学霸学习网 这下你爽了
相关标签
当前位置:首页 >> IT认证 >>

C语言程序设计教程(第三版)课后习题参考答案 张敏霞版


附录 F 课后题参考答案
习 题
1.1 填空题
1.函数 2.主函数 main();主函数 main() 3.主函数 main() 4.函数首部;函数体 5.{;} 6.顺序结构;选择结构;循环结构 7..c;.obj;.exe

1

1.2 思考题
1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如 何进行程序设计的原则。顺序结构,选择结构,循环结构 2.答:算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法: ①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。 3.略 4.略 5.略 1.3 编程题 1.答:
#include "stdio.h" main() { float a=10, b=20, h=5, s; s=(a+b)*h/2; printf("s=%f " , s ); }

2.答:
#include "stdio.h" main() { printf("******************************"); printf("* hello world *"); printf("******************************"); }

270

C 语言程序设计教程(第 3 版)

习 题
2.1 单选题
DBDCA DCABB CA

2

2.2 填空题
1.2.000000 2.1;0.500000 3.9;2 4.6 5.100;d 6. (1)20 7. (1)10;6; 4 8.55 或 '7' 9. x=4;y=6;z=3; m=463 (2)0 (2)6;9;15 (3)60 (3)3;60;83

2.3 改错题(略)

习 题
3.1 单选题
BDABC ADCAC BBA

3

3.2 填空题
1.3 2.261 3.10 4.2, 1;互换 a,b 的值 5.6.6 6.003 7.7 8.5.0,4,c=3<Enter> 9.i=10,j=20<Enter> 10. (1)65 (2)65,A (3)3.14,123.46 (4)3.141600e+000,1.234560e+002 (5)8765.432100 (6)8.765432e+003

附录 F 课后题参考答案 11.a=2b=5x=8.8y=76.34c1=65c2=97 12.%d/%d ;%d/%d=%.2f\n

271

3.3 改错题(略) 3.4 编程题
1.答:
#include "stdio.h" main() { int x,y; scanf("%d%d",&x,&y); printf("\t\tx\ty\n"); printf("十进制数\t%d\t%d\n",x,y); printf("八进制数\t%o\t%o\n",x,y); printf("十六进制数\t%X\t%x\n",x,y); }

2.答:
#include "stdio.h" main() { char ch; printf("请输入一个大写英文字母"); scanf("%c",&ch); printf("大写英文字母是%c\n",ch); printf("它的前导字符是%c\n",ch-1); printf("它的后续字符是%c\n",ch+1); }

3.答:
#include "stdio.h" main() { int x,a,b,c,y; printf("请输入一个三位整数\n"); scanf("%d",&x); a=x/100; b=(x-a*100)/10; c=x%10; y=c*100+b*10+a; printf("反向输出该整数:%d\n",y); } }

4.答:
#include "stdio.h" main() { int hour; double salary, salaryday; scanf("%d,%lf", &hour, &salaryday ); salary=hour*salaryday- hour*salaryday*0.1;

272
}

C 语言程序设计教程(第 3 版)
printf("%8.2lf\n", salary);

5.答:
#include "stdio.h" main() { int a,b,c,t; printf("请输入三个整数\n"); scanf("%d%d%d",&a,&b,&c); printf("交换前 a=%d,b=%d,c=%d\n",a,b,c); t=a;a=c;c=b;b=t; printf("交换后 a=%d,b=%d,c=%d\n",a,b,c); }

习 题
4.1 单选题
BADDD ACBBB BA

4

4.2 填空题
1.1 2. (1)a>0 || b>0 (3)a==1.5 && b==1.5 && c==1.5 3. (1)0 4.c=1 5.?4 6.1 7.5, 0, 3 8.5 9.123 10.( cvb= ='y'||cvb= ='Y')&&(work>=3||college=='y'|| college=='Y')&&age<=35 ( 2)1 (3)1 (4) 0 (2) x>0 && x<=10 (4)p<a || p<b || p<c ( 5)1

4.3 改错题(略) 4.4 编程题
1.答
#include "stdio.h" #include "math.h" main() { double a,b,c,p,area; scanf("%lf%lf%lf",&a,&b,&c); printf("三角形的三边为:%.llf,%.1lf,%.1lf\n",a,b,c); if (a+b>c&&a+c>b&&b+c>a) {p=(a+b+c)/2;

附录 F 课后题参考答案
area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("三角形的面积为%.2lf\n",area); } else printf("不能构成三角形\n"); }

273

2.答:
#include "stdio.h" main() { int x,y; scanf("%d,%d",&x,&y); if(x*x+y*y>1000) printf("%d\n",(x*x+y*y)/100); else printf("%d\n",x+y); }

3.答:
#include "stdio.h" #include "math.h" main() { double x,y; scanf("%lf",&x); if(x<-2) y=x*x-sin(x); else if (x<=2) y=pow(2,x)+x; else y=sqrt(x*x+x+1); printf("x=%.2lf y=%.2lf\n",x,y); }

4.答:
#include "stdio.h" main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian) else printf("this number is not a huiwen\n"); } /*个位等于万位并且十位等于千位*/ printf("this number is a huiwen\n");

5.答:
#include "stdio.h" main() { float p,w,s,d,f;

274

C 语言程序设计教程(第 3 版)
scanf("%f,%,%f",p,s,w); if (s>3000) d=0.15 else if( s>=2000) d=0.1; else if(s>=1000) d=0.08; else if(s>=500) d=0.05; else if(s>=250) d=0.02; else d=0 f=p*w*s*(1-d); printf("%f",f); }

6.答:
#include "stdio.h" main() { int year,money; char x; printf("是否是本公司产品(y/n):"); scanf("%c",&x); if(x=='y'||x=='Y') {printf("产品使用的年限:"); scanf("%d",&year); if(year<=1) money=0; else if(year<8) money=50; else money=100; printf("产品保修额是:%d\n",money); } else { money=200; printf("不是本公司产品,产品保修额是:%d\n",money); } }

7.答:
#include "stdio.h" main() { int money,num1,num2; printf("请输入取款额(≤2000):"); scanf("%d",&money); if(money>2000) printf("请输入取款额数≤2000!\n"); else if(money%50==0) { num1=money/100; num2=(money-num1*100)/50; printf("需支付 100 元:%d 张\n",num1); printf("需支付 50 元:%d 张\n",num2); } else printf("输入钱数必须是 50 的倍数!\n"); }

附录 F 课后题参考答案

275

习 题
5.1 单选题
CDABA ABDDB DBCB

5

5.2 填空题
1.2 0 2.333 3. (1)i<10 或 i<=9 5. (1)max=x 6. (1)x<=9 或 x<10 (2)j%3!=0 (2)flag=-flag (3)scanf("%d", &x) (2) x!=? 1 (2)y=9? x 4. (1)flag*(float)k/(k+1) 或 1.0*flag*k/(k+1)

5.3 改错题(略) 5.4 编程题
1.答: (1)for 循环,其他略
#include "stdio.h" main() { int i,s=0; for(i=1;i<=100;i++) s+=i*i; printf("%d\n",s); }

(2)for 循环,其他略
#include "stdio.h" main() { int i=1,p=1; double s=1; do { s+=1.0/p; p*=++i; }while(1.0/p>1e-6); printf("%lf",s); }

2.答:
#include "stdio.h" main() { int m,n,t,a,b; scanf("%d,%d" ,&m,&n) ; if (m<n)

276

C 语言程序设计教程(第 3 版)
{ t=m ;m=n ;n=t ;} a=m; b=n; t=m%n ; while(t) { m=n ; n=t ;t=m%n;} printf("%d",n); }

3.答:
#include "stdio.h" main() { int x,y,s=1; scanf("%d,%d",&x,&y) ; for( ;y>0 ;y--)s*=x ; printf("%d,%d,%d\n ",s%10,s/10%10,s/100%10); }

4.答:
#include "stdio.h" main() { int x,y,z; for( x=1 ; x<20 ;x++) for( y=1 ;y<33 ;y++) { z=100-x-y ; if ((z%3)==0 &&(5*x+3*y+z/3)==100) printf("x=%d,y=%d,z=%d\n",x,y,z) ; } }

5.答: (a )
#include "stdio.h" main() { int j,k ; for( j=1 ;j<=4 ;j++) { for(k=1;k<=4-j;k++)printf(" "); printf("****") ; printf("\n") ; } }

(b )
#include "stdio.h" main() { int j,k ; for( j=1 ;j<=4 ;j++) {for(k=1;k<=4-j;k++)printf(" "); for(k=1 ;k<=2*j-1 ;k++) printf("*") ; printf("\n") ; } }

附录 F 课后题参考答案 6.答: 程序分析:利用 for 循环控制在 100~999 之间,对每个数分解出个位、十位、百位。
#include <stdio.h> main() { int i,j,k,n; printf("water flower'number is:"); for(n=100;n<1000;n++) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(n==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } } printf("\n"); }

277

7.答:
#include <stdio.h> main() { int x; for(x=1000;x>=3;x--) if(x%3==1&&x%5==2&&x%7==3) { printf("该校的学生人数是:%d 人\n",x); break; } }

8.答:
#include <stdio.h> main() { int x=12,i=1; while(1) { if((x+20+i)==2*(x+i)) break; i++; } printf("小明母亲在%d 年后比小明的年龄大一倍\n",i); printf("那时小明年龄是:%d 岁,小明母亲年龄是:%d 岁\n",x+i,x+20+i); }

习 题
6.1 单选题
DBCCB BDC

6

278

C 语言程序设计教程(第 3 版)

6.2 填空题
1.c 2.60 3.1000 10 4.16

6.3 编程题
1.答:
#include "stdio.h" #include "math.h" #define F(a) a*a+ sqrt(3*a*a+2*a+1) main() { float x, f; scanf("%f", &x ); f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x) ; printf("%f\n", f); }

习 题
7.1 单选题
BCADA CCCDA BCBDB

7

7.2 填空题
1. (1)2 3 4 5 (4)10000 01000 00100 00010 00001 (5) Language 2. (1)j+=2 3. (1)i=1 (6)Language Programming (2)10010 (3)QuickC

(2)a[i]>a[j] (2) x[i? 1]

7.3 改错题(略) 7.4 编程题
1.答:
#define N 10 #include "stdio.h" main() { int a[N]={1,2,3,4,5,6,7,8,9,10,osum=0, qsum=0,j; for(j=0;j<10;j++) if( j%2) qsum+=a[j];

附录 F 课后题参考答案
else osum+=a[j]; printf("osum=%d,qsum=%d\n", osum,qsum); }

279

2.答:
#define N 10 #include "stdio.h" main() { int a[N]={10,20,30,40,50,60,70,80,90}, j, k, x; scanf("%d",&x); for(j=0;j<N;j++) if (x<a[j]) break; if(j==N) a[N-1]=x; else {for(k=N-1; k>j; k--) a[k]=a[k-1]; a[j]=x;} for(j=0;j<N;j++) printf("%d ",a[j]); }

3.答:
#define M 3 #include "stdio.h" main() { int a[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;; for( j=0;j<M;j++) for(k=0;k<M;k++) if (a[j][k]!=a[k][j]) { flag=0; break;} if (flag) printf("ok"); else printf("NO"); }

4.答:
#include "stdio.h" #include "string.h" main() { char c1[10],c2[10],j; gets(c1); gets(c2); for(j=0; (c1[j]==c2[j]) && c1[j] && c2[j]; j++); if (c1[j]>c2[j]) printf("%d\n",1); if (c1[j]<c2[j]) printf("%d\n",-1); if (c1[j]==c2[j]) printf("%d\n",0); }

5.答:
#include "stdio.h" #include "string.h" #define M 3 #define N 80 main() { char a[M][N],j,k,n[5]={0}; for(j=0;j<M;j++) gets(a[j]);

280

C 语言程序设计教程(第 3 版)
for(j=0;j<M;j++) for(k=0;a[j][k];k++) if( a[j][k]>='A' && a[j][k]<='Z') n[0]++; else if (a[j][k]>='a' && a[j][k]<='z') n[1]++; else if (a[j][k]>='0' && a[j][k]<='9') n[2]++; else if (a[j][k]==' ' ) n[3]++; else n[4]++; for(j=0;j<5;j++) printf("%4d", n[j]); }

习 题
8.1 单选题
DBDA C BACCC

8

8.2 填空题
1. (1)2, 1 2. (1)49 (2)10#30# (2)2 (3)FOUR, P (3)2 (5)1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 (4)60

(4) 1, 1, 1, 1, 1 3, 3, 3, 3, 3

8.3 改错题(略) 8.4 编程题
1.答:
#include "stdio.h" main() { int n1,n2,n3,t; int *p1,*p2,*p3; printf("please input 3 number:n1,n2,n3:"); scanf("%d,%d,%d",&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(*p1>* p2) { t=*p1;*p1=*p2;*p2=t;} if(*p1>*p3) { t=*p1;*p1=*p3;*p3=t;} if(*p2>*p3) { t=*p2;*p2=*p3;*p3=t;} printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); }

附录 F 课后题参考答案 2.答:
#include "stdio.h" #define N 3 main() { int a[N],*p=a; for(;p-a<N; p++) scanf("%d",p); p=a+N-1; for(;p-a>=0; p--) printf("%d ",*p); }

281

3.答:
#include "stdio.h" main() { int a[10]; int j,minl=0,maxl=0; for(j=0;j<10;j++) scanf("%d", a+j); for(j=0;j<10;j++) { if(a[maxl]<*(a+j)) maxl=j; if(a[minl]>*(a+j)) minl=j; } j=a[0]; a[0]=a[minl];a[minl]=j; j=a[9];a[9]=a[maxl];a[maxl]=j; for(j=0;j<10;j++) printf("%d ", *(a+j)); }

4.答: 输入阵列如下: 1 5 9 输出阵列如下: 12 11 8 4
#define M 3 #define N 4 #include "stdio.h" main() { int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t; for(k=0,j=M*N-1;k<j;k++,j--) { t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;} for (k=0 ;k<M ;k++) { for(j=0 ;j<N ;j++) printf("%4d ",a[k][j]); printf("\n");

2 6

3 7

4 8

10 11 12 10 9 6 2 5 1

7 3

282
} }

C 语言程序设计教程(第 3 版)

5.答:
#include "stdio.h" main() { int len; char str[20],*p=str; printf("please input a string:\n"); scanf("%s",str); len=0; while(*p!='\0') { len++; p++; } printf("the string has %d characters.\n",len); }

6.答:
#include "string.h" #include "stdio.h" main() { char *str1[5],ch[5][20],k,t,j,*c; void sort(char **); for(k=0;k<5;k++) {str1[k]=ch[k]; gets(str1[k]);} for(k=0;k<7;k++) { t=k; for(j=k+1;j<5;j++) if(strcmp(*(str1+t),*(str1+j))>0) t=j; c=*(str1+t); *(str1+t)=*(str1+k) ; *(str1+k)=c ; } for(k=0;k<5;k++) puts(str1[k]); }

习 题
9.1 单选题
CBBAD DBCCD DCABC BCCBA DCDAB

9

附录 F 课后题参考答案

283

9.2 填空题
1.120 2. x 3.3,2,2,3 4.fac /i 5.8,17 6.9 7.1.0/(i*i) 8. fun-in:30,20,10 fun-end:1015,35,1050 10,20,30 9.012345 10.93636 11. (1)r+b[k] 12.7 5 3 1 9 13.15 14. (1)*x 15. (1)'\0' 16.024 (2)t ( 2)n++ (2)*x

9.3 改错题(略) 9.4 编程题
1.答:
void zhuan( ) { char ch; while((ch=getchar())!='\n') { if(ch>='a' && ch<='z') ch=ch-32; putchar(ch); } }

2.答:
double expp(int n) { int k, fac=1; double sum=1; for(k=1; k<=n; k++) { fac*=k; sum+=1.0/fac ; } return(sum); }

3.答:
int xy3( int x, int y)

284
{ int k, num=1;

C 语言程序设计教程(第 3 版)

for(k=1;k<=y ; k++) num*=x ; num=num%1000 ; return num ; }

4.答:
int age( int n) { int c; if(n==1) c=10 ; else c=age(n-1)+2 ; return c ; }

5.答:
#include "stdio.h" main() { int a,b,c,d; void fun(int a,int b,int *c, int *d); scanf("%d%d",&a,&b); fun(a,b,&c,&d); printf("%d %d",c,d); } void fun(int a,int b,int *c, int *d) { if (b) { *c=a/b; *d=a%b;} }

6.答:
#include "stdio.h" main(int argc,char *argv[]) { int k; printf("argc=%d\n",argc); for (k=1;k<argc; k++) printf("%s\n",argv[k]); }

习 题 10
10.1 单选题
CDBBB BBBAD CCBDC

10.2 填空题
1.所有结构体成员所占存储空间的总和 2.与占用存储空间最大的那个成员相等

附录 F 课后题参考答案 3. (1)struct satype (2)3 4.80 5.struct node 6.0 (3)sa.a (4)9 (5)psa=&sa

285

10.3 编程题
1.答:
#include "stdio.h" struct student { long num; char name[20]; char sex; float score; }; main() { struct student s[20], temp; int j,k, man=0, woman=0; float summan=0,sumwoman=0, aveman, avewoman; for(k=0; k<20; k++) { scanf("%ld %s %c%f",&s[k].num,s[k].name,&s[k].sex,&s[k].score); if(s[k].sex=='m') { summan+=s[k].score; man++;} else { sumwoman+=s[k].score;woman++ ;} } aveman=summan/man; avewoman=sumwoman/woman; printf("%d\t%f\t%d\t%f\n",man,aveman,woman,avewoman); for(k=0; k<19; k++) for(j=0;j<20-k;j++) if(s[j].score<s[j+1].score) { temp=s[j];s[j]=s[j+1];s[j+1]=temp;} printf("the sorted numbers:\n"); for(k=0;k<20;k++) printf("%ld\t%s\t%c\t%5.1f\n", s[k].num, s[k].name, s[k].sex, s[k].score); }

习 题
11.1 单选题
BADD

11

11.2 填空题
1.3d3d330 2. (1)28 (2)20 (3)0 (4)?9

286 3. (1)251 (2)42

C 语言程序设计教程(第 3 版) (3)209 (4)– 295 (5)848

习 题 12
12.1 单选题
BCDCA ADA

12.2 填空题
1.rewind(文件指针) 2."d1.dat","rb" 3.stdin 4.文本文件;二进制文件 5. (1)"w" 6.fopen 7.Hello 8. (1)"r" (2)fgetc(fp) (3)time++ (2)str[i]?32 (3)"r"


推荐相关:

《C语言程序设计教程》(第三版)课后习题参考答案

C语言程序设计教程(第三版)课后习题参考答案。此文档是《C语言程序设计教程》(第三版)(李凤霞主编)的课后答案。希望对大家有帮助。...


C语言程序设计教程(第二版)张敏霞_参考答案

C语言程序设计教程(第版)张敏霞_参考答案_工学_高等教育_教育专区。今日推荐 160份文档 四季养生 中医养生与保健 中医养生知识大全 女人养生之道88份文档 2014...


C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版_教育学_高等教育_教育专区。c语言 C 语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5 请参照本章例题,...


C语言程序设计教程第三版(李凤霞)习题答案

C语言程序设计教程第三版(李凤霞)习题答案_工学_高等教育_教育专区。教材习题答案 第一章习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7....


《C语言程序设计》第三版课后答案

C语言程序设计第三版课后答案_理学_高等教育_教育专区。c程序设计 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: *** Very Goodj! *** 解: main...


C语言设计谭浩强第三版的课后习题答案

C 语言设计谭浩强第三版课后习题答案 1.5 请参照本章例题,编写一个 C 程序,输出以下信息: main() { printf(" *** \n"); printf("\n"); printf(" V...


C语言程序设计(科学出版社)第3章 课后习题参考答案

C语言程序设计(科学出版社)第3课后习题参考答案 隐藏>> 《C 语言程序设计》习题参考答案 第 3 章 习题参考答案一、判断题 1 ×二、填空题 1. 语句 2....


C语言程序设计教程李凤霞第三版课后答案

C语言程序设计教程李凤霞第三版课后答案_工学_高等教育_教育专区。1 【C 语言...1234567890 11145401322 本题也可以不用递归算法,源程序请参考第 7 章第三 4...


C语言程序设计+谭浩强+第三版+课后习题答案

C语言程序设计+谭浩强+第三版+课后习题答案_电脑基础知识_IT/计算机_专业资料。1.5 请参照本章例题,编写一个 C 程序,输出以下信息: *** Very Good! *** 解...


C语言程序设计答案(第三版)杜友福版

C语言程序设计答案(第三版)杜友福版_工学_高等教育_教育专区。C 语言程序设计(第三版)习题答案 习题一 一、名词解释 (1)程序 P1 (2)程序设计 P1 (5)...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com