您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > C语言课后习题参考答案
第2章部分习题参考答案一、单项选择题:DABDDDAAABBCD第3章部分习题参考答案一、单项选择题:CACBBCDBBBADCCBDCCBB二、填空题:1.a!=b||a=c2.x20&&x30||x-1003.04.非05.16.x%3==0&&x%7==0或x%21==0三、编程题2、#includestdio.h#includemath.hvoidmain(){floata,b,c,p,s;printf(请输入三角形的三边长:);scanf(%f%f%f,&a,&b,&c);if(a+bc&&a+cb&&b+ca){p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(三角形面积为:%.2f\n,s);}elseprintf(输入的边长不能构成三角形!\n);}第3章习题3、#includestdio.hvoidmain(){intx,y;scanf(%d,&x);if(x-5&&x0)y=x-1;elseif(x==0)y=x;elseif(x0&&x8)y=x+1;elsey=10;printf(y=%d\n,y);}if(x-5&&x0)y=x-1;if(x==0)y=x;if(x0&&x8)y=x+1;if(x=-5||x=8)y=10;if(x=-5||x=8)y=10;elseif(x0)y=x-1;elseif(x==0)y=x;elsey=x+1;第3章习题4、键盘输入一字符,大写转小写,小写转大写,其他原样输出。#includestdio.hvoidmain(){charch;scanf(%c,&ch);if(ch='A'&&ch='Z')ch=ch+32;elseif(ch='a'&&ch='z')ch=ch-32;printf(%c\n,ch);}ch=getchar();if(ch='A'&&ch='Z')printf(%c\n,ch+32);elseif(ch='a'&&ch='z')printf(%c\n,ch-32);elseprintf(%c\n,ch);第3章习题8.#includestdio.hvoidmain(){intyear,flag=1;doublemoney,rate,total;printf(请输入存款本金和年限:);scanf(%lf%d,&money,&year);if(year==1)rate=0.00215;elseif(year==2)rate=0.0023;elseif(year==3)rate=0.00245;elseif(year==5)rate=0.00275;elseif(year==8)rate=0.0032;elseflag=0;if(flag==1){total=money*(1+rate*12*year);printf(总金额为:%.2lf\n,total);}elseprintf(输入的期限不正确!\n);}第3章习题#includestdio.hvoidmain(){intyear,flag=1;doublemoney,rate,total;printf(请输入存款本金和年限:);scanf(%lf%d,&money,&year);switch(year){case1:rate=0.00215;break;case2:rate=0.0023;break;case3:rate=0.00245;break;case5:rate=0.00275;break;case8:rate=0.0032;break;default:printf(输入的期限不正确!\n);flag=0;}if(flag==1){total=money*(1+rate*12*year);printf(总金额为:%.2lf\n,total);}}第4章部分习题参考答案一、单项选择题BCDBDBCDBBCCCCCBACDD二、编程题2.编程输出1~200之间所有能被3整除、且个位数为6的整数。方法2:#includestdio.hvoidmain(){inti;for(i=6;i=200;i=i+10)if(i%3==0)printf(%5d,i);printf(\n);}方法1:#includestdio.hvoidmain(){inti;for(i=1;i=200;i++)if(i%3==0&&i%10==6)printf(%5d,i);printf(\n);}3.编程从键盘输入k的值及k个整数,统计其中的正数、零和负数的个数。#includestdio.hvoidmain(){intx,k,i,p=0,z=0,m=0;printf(请输入待输入数据的个数:);scanf(%d,&k);printf(请输入%d个整数:,k);for(i=1;i=k;i++){scanf(%d,&x);if(x0)p++;elseif(x==0)z++;elsem++;}printf(正数、0、负数个数分别为:%d,%d,%d\n,p,z,m);}第4章习题6.编程求e=1+1/1!+1/2!+1/3!+…+1/n!,直到最后一项小于10-5为止。#includestdio.hvoidmain(){floatsum,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=%f\n,sum);}#includestdio.hvoidmain(){inti=1;doubles=1,e=1;while(1/s=1E-5){s=s*i;e=e+1/s;i++;}printf(e=%lf\n,e);}第4章习题7.输入两个正整数m和n,求其最小公倍数。#includestdio.hvoidmain(){intm,n,i;printf(请输入两个正整数:);scanf(%d%d,&m,&n);for(i=m;;i++)if(i%m==0&&i%n==0)break;printf(%d,%d的最小公倍数为%d\n,m,n,i);}#includestdio.hvoidmain(){intm,n,i;printf(请输入两个正整数:);scanf(%d%d,&m,&n);i=m;while(i%m!=0||i%n!=0)i++;printf(%d,%d的最小公倍数为%d\n,m,n,i);}第4章习题8.输入若干学生的成绩,输入负数时表示输入结束,求所有学生的最高分。#includestdio.hvoidmain(){intcj,max=0;printf(输入成绩,以负数结束:);scanf(%d,&cj);while(cj=0){if(maxcj)max=cj;scanf(%d,&cj);}printf(最高分:%d\n,max);}#includestdio.hvoidmain(){intcj,max=0;printf(输入成绩,以负数结束:);while(1){scanf(%d,&cj);if(cj0)break;if(maxcj)max=cj;}printf(最高分:%d\n,max);}第4章习题13.有36块砖,由36人搬:男人一次搬4块,女人一次搬3块,两个小孩抬1块,要求一次刚好全部搬完。问男、女、小孩各多少人?#includestdio.hvoidmain(){intx,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%d\n,x,y,z);}}第4章习题14.猴子摘桃问题。T10=1Tn=(Tn+1+1)*2求T1=?nyt=1,i=9开始i≥1结束t=(t+1)*2i=i-1输出t#includestdio.hvoidmain(){inti,t;t=1;for(i=9;i=1;i--)t=(t+1)*2;printf(第一天桃子数量为:%d\n,t);}第4章习题15.求数列2/1,3/2,5/3,8/5,…的前n项之和。#includestdio.hvoidmain(){inta,b,t,i,n;doublesum=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=%f\n,sum);}第4章习题第5章部分习题参考答案一、单项选择题BBADCBDBCCDDDDCBAACD补1:输入6个整数到数组a中,将其逆序输出。补2:输入6个整数到数组a中,将其逆序存储,然后输出。补1:#includestdio.hvoidmain(){inti,a[6];for(i=0;i6;i++)scanf(%d,&a[i]);for(i=5;i=0;i--)printf(%d,a[i]);printf(\n);}补2:#includestdio.hvoidmain(){inti,j,a[6],t;printf(请输入6个整数:);for(i=0;i6;i++)scanf(%d,&a[i]);for(i=0,j=5;ij;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}printf(逆序后数据为:);for(i=0;i6;i++)printf(%d,a[i]);printf(\n);}012345375261a第5章习题二、编程题1.#includestdio.hvoidmain(){inta[10],i,k,sum;floatave;printf(请输入10个整数:);for(i=0;i10;i++)scanf(%d,&a[i]);sum=0,k=0;for(i=0;i10;i++)if(a[i]0){sum+=a[i];k++;}ave=(float)sum/k;printf(正数的个数为:%d,平均值为:%.2f\n,k,ave);}第5章习题2.方法一:#includestdio.hvoidmain(){inta[100],i,n,score;floatsum,ave;i=0,sum=0;while(1){printf(请输入第%d个学生成绩:,i+1);scanf(%d,&score);if(score0)break;a[i]=score;sum+=a[i];i++;}n=i;ave=sum/n;printf(平均分为:%.2f\n,ave);printf(低于平均分的成绩有:);for(i=0;in;i++)if(a[i]ave)printf(%d,a[i]);printf(\n);}第5章习题2.方法二:#includestdio.hvoidmain(){inta[100],i=0,n,score;floatsum=0,ave;printf(请输入学生成绩,以负数结束:);scanf(%d,&score);while(score=0){a[i]=score;sum+=a[i];i++;scanf(%d,&score);}n=i;ave=sum/n;printf(平均分为:%.2f\n,ave);printf(低于平均分的成绩有:);for(i=0;in;i++)if(a[i]ave)printf(%d,a[i]);printf(\n);}第5章习题4.-改:从键盘输入一个3×3的矩阵,求该矩阵主对角线与副对角线上的元素之和。#includestdio.hvoidmain(){inta[3][3],i,j,sum=0;printf(请输入3×3矩阵元素:\n);for(i=0;i3;i++)for(j=0;j3;j
本文标题:C语言课后习题参考答案
链接地址:https://www.777doc.com/doc-7027606 .html