C语言课后习题参考答案_第1页
C语言课后习题参考答案_第2页
C语言课后习题参考答案_第3页
C语言课后习题参考答案_第4页
C语言课后习题参考答案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2章章 部分习题参考答案部分习题参考答案一、单项选择题:一、单项选择题: DABDD DAAAB BCD第第3章章 部分习题参考答案部分习题参考答案一、单项选择题:一、单项选择题:CACBB CDBBB ADCCB DCCBB二、填空题:二、填空题:a!=b | a20 & x30 | x-1000非非011. x%3=0 & x%7=0 或或 x%21=0三、编程题三、编程题2、#include #include void main() float a,b,c,p,s; printf(请输入三角形的三边长请输入三角形的三边长: ); scanf(%f%f%f,&a

2、,&b,&c); if(a+bc & a+cb & b+ca) p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(三角形面积为三角形面积为: %.2fn,s); else printf(输入的边长不能构成三角形输入的边长不能构成三角形!n);第3章 习题3、#include void main() int x,y; scanf(%d,&x); if(x-5 & x0 & x-5 & x0 & x8) y=x+1;if(x=8) y=10;if(x=8) y=10;else if

3、(x0) y=x-1;else if(x=0) y=x;else y=x+1;第3章 习题4、键盘输入一字符,大写转小写,小写转大写,其他原样输出。、键盘输入一字符,大写转小写,小写转大写,其他原样输出。#include void main() char ch; scanf(%c,&ch); if(ch=A & ch=a & ch=A & ch=a & ch=z)printf(%cn,ch-32);elseprintf(%cn,ch);第3章 习题8.#include void main()int year,flag=1;double money,rat

4、e,total;printf(请输入存款本金和年限请输入存款本金和年限: );scanf(%lf%d,&money,&year);if(year=1) rate=0.00215;else if(year=2) rate=0.0023;else if(year=3) rate=0.00245;else if(year=5) rate=0.00275;else if(year=8) rate=0.0032;else flag=0;if(flag=1)total=money*(1+rate*12*year);printf(总金额为总金额为: %.2lfn,total);else pr

5、intf(输入的期限不正确输入的期限不正确!n);第3章 习题#include void main()int year,flag=1;double money,rate,total;printf(请输入存款本金和年限请输入存款本金和年限: );scanf(%lf%d,&money,&year);switch(year)case 1: rate=0.00215; break;case 2: rate=0.0023; break;case 3: rate=0.00245; break;case 5: rate=0.00275; break;case 8: rate=0.0032;

6、break;default: printf(输入的期限不正确输入的期限不正确!n);flag=0;if(flag=1)total=money*(1+rate*12*year);printf(总金额为总金额为: %.2lfn,total);第第4章章 部分习题参考答案部分习题参考答案一、单项选择题一、单项选择题 BCDBD BCDBB CCCCC BACDD二、编程题二、编程题2 . 编程输出编程输出1200之间所有能被之间所有能被3整除、且个位数为整除、且个位数为6的整数。的整数。方法方法2:#include void main () int i; for(i=6;i=200;i=i+10)

7、if(i%3=0) printf(%5d,i); printf(n);方法方法1:#include void main () int i; for(i=1;i=200;i+) if(i%3=0 & i%10=6) printf(%5d,i); printf(n);3. 编程从键盘输入编程从键盘输入k的值及的值及k个整数,统计其中的正数、零和负个整数,统计其中的正数、零和负数的个数。数的个数。#include void main () int x,k,i,p=0,z=0,m=0; printf(请输入待输入数据的个数请输入待输入数据的个数: ); scanf(%d,&k); pr

8、intf(请输入请输入%d个整数个整数: ,k); for(i=1;i0) p+; else if(x=0) z+; else m+; printf(正数、正数、0、负数个数分别、负数个数分别为为:%d,%d,%dn,p,z,m);第4章 习题6. 编程求编程求e=1+1/1!+1/2!+1/3!+1/n!,直到最后一项小,直到最后一项小于于10-5为止。为止。#include void main ()float sum,n,m,c;sum=1; n=1; m=1; c=1;while(c=1E-5)m=m*n;c=1/m;sum=sum+c;n=n+1;printf(e=%fn,sum);#

9、include void main ()int i=1;double s=1,e=1;while(1/s=1E-5)s=s*i;e=e+1/s;i+;printf(e=%lfn,e);第4章 习题7. 输入两个正整数输入两个正整数m和和n,求其最小公倍数。,求其最小公倍数。#include void main ()int m,n,i;printf(请输入两个正整数请输入两个正整数: );scanf(%d%d,&m,&n);for(i=m;i+)if(i%m=0 & i%n=0)break;printf(%d,%d的最小公倍数为的最小公倍数为%dn,m,n,i);#inc

10、lude void main ()int m,n,i;printf(请输入两个正整数请输入两个正整数: );scanf(%d%d,&m,&n);i=m;while(i%m!=0 | i%n!=0)i+;printf(%d,%d的最小公倍数为的最小公倍数为%dn,m,n,i);第4章 习题8. 输入若干学生的成绩,输入负数时表示输入结束,求所有学生输入若干学生的成绩,输入负数时表示输入结束,求所有学生的最高分。的最高分。#include void main() int cj,max=0; printf(输入成绩,以负数结束输入成绩,以负数结束: ); scanf (%d,&

11、;cj); while(cj=0) if(maxcj) max=cj; scanf (%d,&cj); printf(最高分:最高分:%dn,max);#include void main() int cj,max=0; printf(输入成绩,以负数结束输入成绩,以负数结束: ); while(1) scanf (%d,&cj); if(cj0) break; if(maxcj) max=cj; printf(最高分:最高分:%dn,max);第4章 习题13. 有有36块砖,由块砖,由36人搬:男人一次搬人搬:男人一次搬4块,女人一次搬块,女人一次搬3块,块,两个小孩抬两个

12、小孩抬1块,要求一次刚好全部搬完。问男、女、小孩各多块,要求一次刚好全部搬完。问男、女、小孩各多少人?少人?#include void main () int x,y,z; /x,y,z分别表示男分别表示男,女女,小孩数小孩数 for(x=0;x9;x+) for(y=0;y12;y+) z=36-x-y; if(4*x+3*y+z/2=36 & z%2=0) printf(%d %d %dn,x,y,z); 第4章 习题14. 猴子摘桃问题。猴子摘桃问题。T10=1Tn=(Tn+1+1)*2求求T1=?nyt=1,i=9开始开始i1结束结束t=(t+1)*2i=i-1输出输出t#in

13、clude void main ()int i,t;t=1;for(i=9;i=1;i-)t=(t+1)*2;printf(第一天桃子数量为第一天桃子数量为: %dn,t);第4章 习题15. 求数列求数列2/1 , 3/2 , 5/3 , 8/5 , 的前的前n项之和。项之和。#include void main()int a,b,t,i,n;double sum=0.0;printf(请输入请输入n:);scanf(%d,&n);a=2,b=1;for (i=1;i=n;i+)sum=sum+(double)a/b;t=a; a=a+b; b=t;printf(sum=%fn,su

14、m);第4章 习题第第5章章 部分习题参考答案部分习题参考答案一、单项选择题一、单项选择题 BBADC BDBCC DDDDC BAACDl 补补1:输入:输入6个整数到数组个整数到数组a中,将其逆序输出。中,将其逆序输出。l 补补2:输入:输入6个整数到数组个整数到数组a中,将其逆序存储,然后输出。中,将其逆序存储,然后输出。补补1:#include void main() int i,a6; for(i=0;i=0;i-) printf(%d ,ai); printf(n);补补2:#include void main() int i,j,a6,t; printf(请输入请输入6个整数个整

15、数: ); for(i=0;i6;i+) scanf(%d,&ai); for(i=0,j=5;ij;i+,j-) t=ai ; ai=aj ; aj=t ; printf(逆序后数据为逆序后数据为: ); for(i=0;i6;i+) printf(%d ,ai); printf(n); 0 1 2 3 4 5 3 7 5 2 6 1a第5章 习题二、编程题二、编程题1.#include void main()int a10,i,k,sum;float ave;printf(请输入请输入10个整数个整数: );for(i=0;i10;i+)scanf(%d,&ai);sum=

16、0,k=0;for(i=0;i0) sum+=ai; k+; ave=(float)sum/k;printf(正数的个数为正数的个数为: %d, 平均值为平均值为: %.2fn,k,ave);第5章 习题2.方法一:方法一:#include void main()int a100,i,n,score; float sum,ave;i=0,sum=0;while(1)printf(请输入第请输入第%d个学生成绩个学生成绩: ,i+1);scanf(%d,&score);if(score0) break;ai=score; sum+=ai;i+;n=i;ave=sum/n;printf(平

17、均分为平均分为: %.2fn,ave);printf(低于平均分的成绩有低于平均分的成绩有: );for(i=0;in;i+)if(aiave) printf(%d ,ai);printf(n);第5章 习题2.方法二:方法二:#include void main()int a100,i=0,n,score;float sum=0,ave;printf(请输入学生成绩,以负数结束:请输入学生成绩,以负数结束:);scanf(%d,&score);while(score=0)ai=score;sum+=ai;i+;scanf(%d,&score);n=i;ave=sum/n;pr

18、intf(平均分为平均分为: %.2fn,ave);printf(低于平均分的成绩有低于平均分的成绩有: );for(i=0;in;i+)if(aiave) printf(%d ,ai);printf(n);第5章 习题4.-改:改:从键盘输入一个从键盘输入一个33的矩阵,求该矩阵主对角的矩阵,求该矩阵主对角线与副对角线上的元素之和。线与副对角线上的元素之和。#include void main() int a33, i, j, sum=0 ; printf(请输入请输入33矩阵元素矩阵元素:n); for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij

19、); if(i=j | i+j=2) sum=sum+aij; printf(主副对角线元素和主副对角线元素和: %dn, sum);第5章 习题5.#include #define M 3#define N 4void main() int i,j;float aMN,bM,sum;printf(请输入请输入%d%d矩阵矩阵:n,M,N);for(i=0;iM;i+)sum=0;for(j=0;jN;j+)scanf(%f,&aij);sum+=aij; bi=sum/N;printf(各行平均值为:各行平均值为:);for(i=0;iM;i+)printf(%7.2f,bi);pr

20、intf(n);第5章 习题8.#include #includevoid main() char a20;int i;printf(请输入字符串:请输入字符串:);gets(a);for(i=strlen(a)-1;i=0;i-)printf(%c,ai);printf(n);第5章 习题9.#include void main() char s180,s240;int i,j;printf(请输入第请输入第1个字符串个字符串:);gets(s1);printf(请输入第请输入第2个字符串个字符串:);gets(s2);i=0;while(s1i!=0)i+;j=0;while(s2j!=0

21、) s1i=s2j; i+; j+; s1i=0;printf( 连接后的字符串为连接后的字符串为:%sn,s1);第5章 习题10.#include void main() char s180,s280;int i;printf(请输入一个字符串请输入一个字符串:);gets(s2);for(i=0;s2i!=0;i+)s1i=s2i; s1i=0;printf(复制后的字符串为复制后的字符串为:%sn,s1);第5章 习题13./冒泡法升序排序冒泡法升序排序#include #include void main() int n,i,j; char t,s80; printf(请输入字符串请

22、输入字符串: ); gets(s); n=strlen(s); for(i=0;in-1;i+) for(j=0;jsj+1) t=sj,sj=sj+1,sj+1=t; printf(排序后字符串排序后字符串: ); puts(s);/选择法升序排序选择法升序排序#include #include void main() int n,i,j,m; char t,s80; printf(请输入字符串请输入字符串: ); gets(s); n=strlen(s); for(i=0;in-1;i+) m=i; for(j=i+1;jn;j+) if(sjsm) m=j; if(m!=i) t=si,

23、si=sm,sm=t; printf(排序后字符串排序后字符串: ); puts(s);第5章 习题第第6章章 部分习题参考答案部分习题参考答案一、单项选择题一、单项选择题 CAAAB DCBBB CADAD CDBA A 注:第注:第20小题不做要求小题不做要求二、编程题二、编程题3.#includevoid main() int min(int,int,int); int a,b,c,d,e,m1,m2; printf(请输入请输入5个整数个整数: ); scanf(%d%d%d%d%d,&a,&b,&c,&d,&e); m1=min(a,b,c);

24、 m2=min(m1,d,e); printf(最小值为最小值为: %dn,m2);int min(int x,int y,int z) int m; if(xy) m=x; else m=y; if(zm) m=z; return m;第6章 习题4.#include#includevoid main() int prime(int m); int i; for(i=2;i=100;i+) if(prime(i) printf(%5d,i); printf(n);int prime(int m) int k,n; n=(int)sqrt(m); for(k=2;k=n;k+) if(m%k=

25、0) return 0; return 1;第6章 习题5.#includeint fgcd(int m,int n) /最大公约数函数最大公约数函数 int i; i=mm?m:n; for( ; ;i+) if(i%m=0 & i%n=0) return i; void main() int a,b,gy,gb; printf(请输入两个整数请输入两个整数: ); scanf(%d%d,&a,&b); gy=fgcd(a,b); gb=flcd(a,b); printf(%d,%d的最大公约数为的最大公约数为:%dn,a,b,gy); printf(%d,%d的最小

26、公倍数为的最小公倍数为:%dn,a,b,gb);第6章 习题6.#includeint f(int a,int n) int i,t=0; for(i=1;i=n;i+) t=t*10+a; return t;void main() int a,n,i,s=0; printf(请输入两个整数请输入两个整数a,n: ); scanf(%d%d,&a,&n); for(i=1;i=n;i+) s=s+f(a,i); printf(结果为结果为: %dn,s);第6章 习题8.#include#define N 6int max(int a) int i,m; m=a0; for(i

27、=1;iN;i+) if(mai) m=ai; return m;void main() int i,bN; printf(请输入请输入%d个整数个整数: ,N); for(i=0;iN;i+) scanf(%d,&bi); printf(最大数为最大数为: %dn,max(b);第6章 习题9.#includevoid sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; void main() int i,n,a100; /最多最多100个元素个元素 printf(请输

28、入元素个数请输入元素个数: ); scanf(%d,&n); printf(请输入请输入%d个元素个元素: ,n); for(i=0;in;i+) scanf(%d,&ai); sort(a,n); printf(排序结果为排序结果为:); for(i=0;in;i+) printf(%d ,ai); printf(n);第6章 习题12.#includeint fib(int k) int f; if(k=1) f=0; else if(k=2) f=1; else f=fib(k-1)+fib(k-2); return f;void main() int i,n; prin

29、tf(请输入项数请输入项数: ); scanf(%d,&n); printf(前前%d项项fibonacci数列为数列为:,n); for(i=1;i=n;i+) printf(%d ,fib(i); printf(n);第6章 习题第第7章章 部分习题参考答案部分习题参考答案一、单项选择题一、单项选择题 DBCCC ACBAD CACC D DDCDC CBCAC 注:注:1525小题不做要求小题不做要求二、填空题二、填空题 1. 2010 5 2. s=p+3 s=s-2 100 *(s+1) 2 3. 110 4. abcde a 5. malloc( sizeof(int)*1

30、1 ) 不做要求不做要求三、编程题(用指针完成)三、编程题(用指针完成)1.#includevoid swap(int *px,int *py) int t; t=*px; *px=*py; *py=t;void main() int a,b,c; printf(请输入三个整数请输入三个整数: ); scanf(%d%d%d,&a,&b,&c); if(ab) swap(&a,&b); if(ac) swap(&a,&c); if(bc) swap(&b,&c); printf(三个数从大到小为三个数从大到小为: %d %

31、d %dn,a,b,c);第7章 习题2.#includevoid swap(int *px,int *py) int t; t=*px; *px=*py; *py=t;void main() int a10,i; int *pmax,*pmin; /两个指针分别指向最大,最小数两个指针分别指向最大,最小数 printf(请输入请输入10个整数个整数: ); for(i=0;i10;i+) scanf(%d,&ai); pmax=pmin=a; for(i=1;i10;i+) if(*pmaxai) pmin=&ai; swap(pmax,&a9); swap(pmin

32、,&a0); printf(交换后的交换后的10个数为个数为: ); for(i=0;i10;i+) printf(%d ,ai); printf(n); 第7章 习题3.#includevoid main() char a100,*p=a; int flag=0; printf(请输入一个字符串请输入一个字符串: ); gets(a); while(*p!=0) if(*p=k) flag=1; break; p+; if(flag=1) printf(已找到已找到!n); else printf(没找到没找到n); 第7章 习题5.#includevoid scat(char *s

33、1,char *s2) char *p1=s1,*p2=s2; while(*p1!=0) p1+; while(*p2!=0) *p1=*p2; p1+; p2+; *p1=0;void main() char a80,b40; printf(请输入第请输入第1个字符串个字符串: ); gets(a); printf(请输入第请输入第2个字符串个字符串: ); gets(b); scat(a,b); printf(b连接到连接到a后字符串为后字符串为:%sn,a); 第7章 习题6.#include#includevoid main() int hw(char *s); char s80; printf(请输入一个字符串请输入一个字符串: ); gets(s); if(hw(s) printf(该字符串是回文该字符串是回文!n);

温馨提示

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

评论

0/150

提交评论