c语言课后答案.doc_第1页
c语言课后答案.doc_第2页
c语言课后答案.doc_第3页
c语言课后答案.doc_第4页
c语言课后答案.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考答案13参考答案 第1章一、选择题1. B2. C3. D4. D二、填空题1. 函数2. 函数说明 函数体 3. 4. .c .obj .exe三、综合题1. C语言的主要特点有:(1)语言表达能力强。(2)语言简洁,使用方便,灵活。(3)运算符丰富。(4)数据结构丰富,具有现代化语言的各种数据结构。(5)C语言是一种结构化程序设计语言。(6)C语言为字符、字符串、集合和表的处理提供了良好的基础。(7)语法限制不大,程序设计自由度大。(8)生成的目标代码质量高,程序执行效率高。(9)具有预处理程序和预处理语句,给大型程序的编写提供了方便。(10)具有良好的移植性。2. 程序运行结果如下所示:Today is Monday!Its a nice day today!3. 参考程序如下:main() float a,b,h,area; printf(“Please input a,b,h:”); scanf(“%f,%f,%f”,&a,&b,&h); area=(a+b)*h/2; printf(“nThe area is:%fn”, area);第2章一、选择题1. B2. C3. D4. B5. A 6. C 7. D二、填空题1. 1 0255 2 -32768327674 -214748364821474836474 3/4E-383/4E+382. 字母或者下划线3. double三、综合题1. a是一个字符,而“a”是一个字符串。2. (1)3.5(2)4.03. 参考程序如下:#includemain()char ch;printf(Please input a character:);scanf(%c,&ch);if(chz)printf(Input error!n);else printf(%c,ch-32);第3章一、选择题1. B2. D3. D4. B5. A6. C C 7. A 8. C C9. B C10. C C11. A12. B 13. B A A D B二、填空题1. 32. 13. 44. 15. 2 32306. 1 0107. 78. 19. n = - 410. x = 3,a = 2,b = 3三、综合题1. 输出结果为:7000000630000002600000012. 输出结果为:1111013. 输出结果为:101210第4章一、选择题1. D 2. C3. D4. A二、填空题1. dec:-1,oct:177777,hex:ffff,unsigned:655352. 3.141593,3.14159+003. c=I 4. Display the input numbers:56 70 70 112 70三、综合题1. 略。2. (1)1(2)0(3)sum1=8 sum2=203. 参考程序如下:#includemain()char ch;printf(请输入一个字符:);scanf(%c,&ch);printf(对应的ASCII码:%dn,ch);4. 参考程序如下:#includemain()char ch;printf(请输入一个数字字符(09):);scanf(%c,&ch);printf(对应的输出:%dn,ch-0);5. 参考程序如下:#includemain()int a;scanf(%d,&a);printf(oct:%o,hex:%x,a,a);6. 参考程序如下:#includemain()float c,f;printf(请输入一个摄氏温度:);scanf(%f,&c);f=9/5.0*c+32;printf(对应的华氏温度:%fn,f);7. 参考程序如下:#include#define pi 3.1415926main()float r=4.0,h=5.0,l,s,v;l=2*pi*r;s=pi*r*r;v=s*h;printf(l=%6.2f,s=%6.2f,v=%6.2fn,l,s,v);8. 参考程序如下:#include#define pi 3.1415926main()float a=4.0,b=5.0,l,s;l=2*(a+b);s=a*b;printf(l=%f,s=%fn,l,s);9. 参考程序如下:#includemain()int num,a,b,c;printf(输入一个三位整数:n);scanf(%3d,&num);a=num/100;b=num/10-10*a;c=num-10*b-100*a;printf(结果输出:%d%d%dn,c,b,a);10. 参考程序如下:#includemain()int h=20,f=60,x,y;printf(鸡兔总数:%d,鸡兔腿总数:%dn,h,f);x=(4*h-f)/2;y=(f-2*h)/2;printf(鸡:%d,兔:%d,x,y);第5章一、选择题1. A 2. D3. A4. C二、填空题1. (1)x = y(2)a+cb+d(3)a+2!=b+3(4)x 8(5)x +y 8&x -y x| f=y | f != z(7)(a=1&a=10) & a!=7(8)a = 6g | (sqrt(a)7式的值为0则执行“printf(%dn,x-);”,由于在判断x+7后x的值已变为7,“printf(%dn,x-);”是先取x的值并打印,随后才是自减,因此输出为7。3. 输出结果为:5,-4,-3,5分析:“a-=b+=c;”是先计算“b+=c;”然后才是计算“a-=b;”,故b=5,a=-4,在判断条件表达式“ab?b:a+;”时,由于ab为真,故取b的值并输出,结果为5。在判断条件表达式“ab?a+:b+;”时,由于ab为真,故取a+,先取a的值并打印,结果为-4,再执行a+,a的值变为-3,注意b+并不被执行,故b的值仍为5,所以在执行“printf(%d,%dn,a,b);”后输出为-3,5。4. 参考程序如下:#includemain() int a,b,c,d;scanf(%d,%d,%d,%d,&a,&b,&c,&d);if(ab)a=b;if(ac)a=c;if(ad)a=d;printf(%dn,a);5. 参考程序如下:#includemain() int i;scanf(%d,&i);if(i%5=0|i%8=0)printf(YES!n);else printf(NO!n);6. 参考程序如下: (1)判断能否构成三角形的条件:是否两边之和大于第三边; (2)根据三角形的性质来判断,首先判断是不是等边三角形,不是等边就判断是不是等腰,判断是不是直角三角形。若三者都不是,就是一般三角形。参考程序如下:#includemain() float a,b,c;scanf(%f,%f,%f,&a,&b,&c);if(a+bc|a+cb|b+ca)printf(%f,%f和%f不能构成一个三角形!n,a,b,c);else if(a=b&b=c)printf(%f,%f和%f能构成一个等边三角形!n,a,b,c);else if(a=b|b=c|c=a)printf(%f,%f和%f能构成一个等腰三角形!n,a,b,c);else if(c*c=a*a+b*b|a*a=c*c+b*b|b*b=a*a+c*c)printf(%f,%f和%f能构成一个直角三角形!n,a,b,c);else printf(%f,%f和%f能构成一个一般的三角形!n,a,b,c);第6章一、选择题1. A2. B3. C4. D二、填空题1. $*$*$*#2. 32 3. 输出结果为以下图形:*4. 8三、综合题1. continue与break语句的区别是:continue语句只结束本次循环,而不是结束整个的循环。而break语句是结束整个循环过程,不再判断执行循环的条件成立与否。2. 输出结果为:sum=2.72分析:本程序用于通过交互方式得到n,实现1/x的累加运算,其中,x的值从1到n,%.2f用来控制结果输出两位小数。3. 输出结果为:sum=100,n=104. 输出结果为:i=1,j=2,k=45. 解题指导:可用一个循环变量i来作计数器,增量为2。先令i=1,计算i*(i+1)*(i+2),然后将i加2,再计算i*(i+1)*(i+2),依次循环到i=99。再用一个变量sum作累加器,计算sum+= i*(i+1)*(i+2);参考程序如下:#includemain()int i;long sum=0;for(i=1;i=99;i+)sum+=i*(i+1)*(i+2);printf(sum=%ldn,sum);6. 参考程序如下:#includemain()int m,n,i,temp;printf(请输入两个正整数:);scanf(%d,%d,&m,&n);if(m1;i-)if(m%i=0&n%i=0)printf(最大公约数为:%dn,i);break;for(i=n;i=m*n;i+)if(i%m=0&i%n=0)printf(最小公倍数为:%dn,i);break;7. 参考程序如下:#includemain() int i,j,k;for(i=1;i0;k-)printf( );for(j=2*i-1;j0;j-)printf(*);printf(n);8. 解题指导:设置一变量i用于测试1000范围内的数,另一变量sum用于存放i的所有因子的和,当i=sum时被测试数i则为完全数。参考程序如下:#includemain() int n,m,sum=0;printf(01000内的完全数有:);for(n=6;n=1000;n+)m=n;for(int i=1;im;i+)if(n%i=0)sum+=i;if(sum=n)printf(%d ,n);sum=0;printf(n); 第7章一、选择题1. D2. A3. D4. B5. B 6. B7. A8. D9. C 10. D11. C二、填空题1. 函数说明部分 函数体 2. void add(float a,float b) float add(float a,float b)3. 111 4. max is:12 5. k=13三、综合题1. 输出结果为:8,172. 输出结果为:0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 183. 错误。应把函数类型void改成int。4. 错误。if(d%2=0) 应改为 if(d%2=0)s= 10 应改为s/= 105. 参考程序如下:int getmax(int a,int b,int c)if(ab)a=b;if(ac)a=c;return a;6. 参考程序如下:#includefloat fac(int n)float f=1;int i;if(n=0|n=1)f=1;else for(i=1;i=n;i+)f*=i;return f;main()int n;printf(Please input n:);scanf(%d,&n);float f;f=fac(n);printf(%fn,f);7. 参考程序如下:#includemain()int a,b,c,num,sum;for(num=100;num=999;num+)a=num/100;b=num/10%10;c=num%10;sum=a*a*a+b*b*b+c*c*c;if(sum=num)printf(%dn,num);第8章一、选择题1. C 2. D3. D 4. D5. B6. B7. D 8. A二、填空题1. 常量表达式 常量表达式2. 按行为主顺序存放3. 6 0 4. 0 6 5. 第9个元素(1,3)的值是-1三、综合题1. 输出结果为:1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 12. 输出结果为:AQM3. 输出结果为:AzyD4. 输出结果为:(空行)91985. 输出结果为:5 7 4 8 9 11 5 7 4 8 99 1 5 7 4 88 9 1 5 7 44 8 9 1 5 77 4 8 9 1 56. 输出结果为:1 7. 输出结果为:W* 8. 输出结果为:he 9. 正确10. 参考程序如下:#includevoid main()int num,space,up,low,other;char text380;int row,col;for(row=0;row3;row+)for(col=0;col80;col+)scanf(%c,&textrowcol);num=0;space=0;up=0;low=0;other=0;for(row=0;row3;row+)for(col=0;col=A&textrowcol=a&textrowcol=0&textrowcol=9)num+;else if(textrowcol= )space+;else other+;printf(up=%dn,up);printf(low=%dn,low);printf(num=%dn,num);printf(space=%dn,space);printf(other=%dn,other);11. 参考程序如下:#include#define SIZE 10void main()int arrSIZESIZE;int row,col;arr00=1;for(row=0;rowSIZE;row+)for(col=row+1;colSIZE;col+)arrrowcol=0;for(row=0;rowSIZE;row+)for(col=0;col0&col0)arrrowcol=arrrow-1col-1+arrrow-1col;elsearrrowcol=1;printf(%d%c,arrrowcol, );printf(n);第9章一、选择题1. C 2. D 3. D 4. A 5. D 6. D 7. B8. D二、填空题1. 地址 0 & *2. 0三、综合题1. 输出结果为:52. 输出结果为:63. 输出结果为:abcdefglkjih4. 参考程序如下:#include#define SIZE 10void show(int *p,int n);void main()int arrSIZE;int i;for(i=0;i0)n-;printf(%d%c,pn, );printf(n);5. 参考程序如下:#include#define SIZE 5void change(int *p,int n);main()int arrSIZE;int i;for(i=0;i1)i-;if(pminpi)min=i;temp=p0;p0=pmin;pmin=temp;for(i=0;in;i+)printf(%d%c,pi, );printf(n);6. 参考程序如下:#include#define SIZE 5void insert(char *p1,char *p2,int pos);main()char s1SIZE,s2SIZE;int n;scanf(%s,s1);scanf(%s,s2);printf(enter a num =0n);scanf(%d,&n);insert(s1,s2,n);void insert(char *p1,char *p2,int pos)char s2*SIZE+1;int len1,len2;len1=0;len2=0;while(len1pos)slen1=p1len1;len1+;while(len2SIZE)slen1+len2=p2len2;len2+;while(len1+len2)(y)(z)?(y):(z)?(x):(y)(z)?(y): (z)2. 93. 54. 50三、综合题1. 参考程序如下:#include#define D(m,n) m%nmain()int left,m,n,temp;scanf(%d,%d,&m,&n);if(mn)temp=m;m=n;n=temp;remainder=D(m,n);printf(remainder=%dn,remainder);2. 参考程序如下:#include#define MIN(a,b) ab?a:bmain()int a,b,min;scanf(%d,%d,&a,&b);min=MIN(a,b);printf(min=%dn,min);第11章一、选择题1. D2. A3. D4. B5. D6. C7. D8. B二、填空题1. 2 32. 10,x3. 164. 4三、综合题1. 输出结果为:1,22. 输出结果为:2,133. enum money f1=1,f2=2,f5=5,j1=10, j2=20,j5=50,y1=100,y2=200,y5=500,y10=1000,y20=2000,y50=5000,y100=10000;4. 参考程序如下:#includestruct stuint num;int mid;int end;int ave;s3;main()int i;struct stu *p;for(p=s;pnum), &(p-mid),&(p-end);p-ave=(p-mid+p-end)/2;for(p=s;pnum,p-mid,p-end,p-ave);5. 参考程序如下:#include#includestruct studentint info;struct student *pre;struct student *next;void print1(struct student *head)struct student *p;printf(n the linklist is:);p=head;if(head!=NULL)doprintf(%d,p-info);p=p-next;while(p!=NULL);printf(n);第12章一、选择题1. C2.D3. A4. C A C B B二、填空题1. 112. 33. 154. -565. 1 0 1 06. 17. 1010三、综合题1. 参考程序如下:#includemain( )unsigned int a;unsigned int get_bits(unsigned);printf(n 请输入一个分进制数:”);scanf(“%o”,&a);printf(“结果是:%on”,get_bits(a);unsigned int get_bits(unsigned x)/*求一个二进制数的补码函数*/unsigned int y;y= x &0100000;if(y = = 0100000)y= x +1;elsey= x;return(y);2. 参考程序如下:#includemain( )unsigned getbits(unsigned value, int n1, int n2);unsigned int a;int n1,n2;printf(“请输入一个八进制数:”);scanf(“%o”,&a);printf(“输入n1和n2:”);scanf(“%d, %d”,&n1,&n2);printf(“结果是:%on”,getbits(a,n1-1,n2);unsigned getbits(unsigned value, int n1, int n2)unsigned int z;z=0;z=(zn1)&(z(16 n2);return(z);3. 参考程序如下:#includemain( )unsigned int a;unsigned getbits(unsigned);printf(“请输入一个八进制数:”);scanf(“%o”,&a);printf(“结果是:%on”,getbits(a);unsigned getbits(unsigned value)int i, j, m, n;unsigned int z, a, q;z=0;for(i = 1; i=15; i+=2)q=1;for(j =1; j(16 i);a=a15;z=z+a*q;return(z);4. 参考程序如下:#includemain( )int n;unsigned int a;unsigned moveright(unsigned, int);unsigned moveleft(unsigned, int);printf(“请输入一个八进制数:”);scanf(“%o”,&a);printf(“输入n:”);scanf(“%d”,&n);if(n0)moveright(a, n);printf(“结果是:%on”,moveright(a, n);elsen= - n;moveleft(a, n);printf(“结果是:%on”,moveleft(a, n);unsigned moveright(unsigned value, int n)/* 右循环移位函数 * /unsigned int z;z=(valuen) | (value(16 n) | (valuen);return(z);第13章一、选择题1. D2. B3. C4. B 5. C6. A7. D8. D9. B二、填空题1. 文本文件 二进制文件2. 出错3. 清除abc原有的数据 4. 建立新文件5. 正确的6. 正确的7. fscanf/fprintf fwrite/fread fgets/fputs8. fseek ftell三、综合题1. 依题意,本题使用getchar( )函数获取用户输入的字符,然后用fput( )函数写入到文件中。实现本题功能的程序如下:#includemain()FILE *fp;char ch,fname10;printf(“输入一个文件名:”);gets(fname);if(fp=fopen(fname,”w + ”)= =NULL)printf(“不能打开%s文件n”,fname);exit(1);printf(“输入数据:n”);while(ch=getchar()!= # )fputc(ch,fp);fclose(fp);2. 依题意,本题先使用fopen( )函数打开abc文件,然后用fwrite( )函数把该字符串写入到文件中,再使用fseek( )把文件位置指针定位于文件开头,用fread( )读出后在屏幕上显示出来。实现本题功能的程序如下:#include#includemain()FILE *fp;char msg=”this is a test !“;char buf20;if(fp=fopen(“abc”,”w + ”)=NULL)printf(“不能建立abc文件n“);exit(1);f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论