《C语言程序设计第4版微课版习题参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第4版微课版习题参考答案.docx(30页珍藏版)》请在第一文库网上搜索。
1、1选择题(1)C(2)B(3)C(4)D(5)D(6)A(7) D(8)C(9)C(10)D(11)CC程序是由一个main函数和若干个其他函数构成的。C语言程序上机的基本步骤:编辑、编译、连接、运行与调试.C表示C语言源文件,obj表示C语言编译后的二进制文件.exe表示可执行程序3.写出一个C程序:已知一个长方形长a=4,宽b=3,求长方形面积S的值并输出。inc1udeintmain()(inta,b,s;a=4:b=3;s=a*b;printf(s=%dnts);return0;)习题21选择题(1)C(2)D(3)B(4)B(5)C(1) B(7)A(8)D(2) s=(a+b+c)
2、/2area=sqrt(s*(s-a)*(s-b)*(s-c)(1) x=(-b+sqrt(b*b-4*a*c)/(2*a)(2) (1)4.5(2)1(3)2(4)6.5(3) ch=x,x=-2,y=1,z=0.OOOOOO(4) b=312654,a=-15026,c=N(5) x=3.567430,y=3.567000(6) c1=4,c2=3,c3=2,c4=12,2,1(7) y=64.0999981填空题(1)n(2)dOXu(3)%c,%cnc1-32,c2-32printf(*%d,%d,%d,%dn*,c1,c2,c1-32,c2-32);2.程序阅读(1)200(2)97
3、b(3)68,82(4)a=3b=812.50.7083e2Aa(5)5767.856400,-789.124023A,65,101,411234567,4553207,12(168765535,177777,ffff,65535COMPUTER,COM(5)16(6)10(7)不完全等价,第一段程序运行结束,sum-5050,i=101第二段程序运行结束SUm=5050,i=100(8)8(9)*#*#*#$(10)1(11)3,5,3(12)21(13)0(14)10(15)213.编程题已知有函数:x+3(x0)y=-0(x=0).X2-I(x0)输入X的值,输出y。inc1udeint
4、main()(intx,y;scanf(%d,&x);if(xO)y=x+3;e1seif(x=O)y=0;e1sey=x*-1;Printf(%dn,y);returnO;)(2)由键盘输入三个整数,输出其中最大的数。inc1udeintmain()intx,y,z,max;scanf(伐d,%d,%d,&x,&y,&z);max=x;if(maxy)max=y;if(maxz)max=z;printf(,%dn*,max);return0;)(3)由键盘输入三个整数,按由小到大的顺序输出。inc1udeintmain()(inta,b,c,t;scanf(d,%d,%d&a,&b,&c);
5、if(ab)(t=a;a=b;b=t;)if(ac)(t=a;a=c;c=t;)if(bc)(t=b;b=c;c=t;)printf(%d,1,强dn”,a,b,c);return0;)t=a;a=c;c=t;)if(bc)(t=b;b=c;c=t;printf(%d,%d,%dn”,a,b,c);returnO:(4)由键盘输入三角形的三个边a,b,c,计算并打印三角形的面积Sinc1udeinc1udeintmain()(doub1ea,b,c,t,s;scanf%1f,%1f”,&a,&b,&c);if(a0&b0&c0)if(a+bc&a+cb&b+ca)(t=(a+b+c)/2;s=
6、sqrt(t*(t-a)*(t-b)*(tc);printf(*s=%.21fnw,e1seprintf(输入的数据不满足三角形规则n):return0;)(5)由键盘输入一个大写字母,要求改用小写字母输出。inc1udeintmain()(charc;c=getchar();if(c=A,&c=Z*)c=c+32;printf(小写字母为%cn”,c);return0;)(6)由键盘输入一个三位整数,将它反向输出。例如输入123,输出321。inc1udeintmain()intx;inta,b,c;scanf&x);a=x%10;b=x10%10;c=x100%10;printfa*100
7、+b*10+c);return0;)(7)由键盘输入a,b,c,求ax2+bx+c=0方程的根。inc1udetjinc1udeintmainOdoub1ex1,x2;doub1ea,b,c,d;scanf(务己f,&b,&c);d=b*b-4*a*c;if(a=0)(x1=cb;printf(*方程只有一个解,为.31fn,x1);)e1seif(d=O)x1=x2=-b(2*a);printfC方程两根相等,为.31fn*,x1);Ie1seif(dO)x1=(-b+sqrt(d)(2*a):x2=(-b-sqrt(d)/(2*a);printf(*方程两根为31f,%.31fn*,x1,
8、x2);e1seprintfC方程无解n);return0;(8)判断某一年是否是闰年。inc1udeintmainO(intyear;scanf(*%dn,fiyear);if(year%4=0&year%100!=0year%400=0)Printf(yesn);e1seprintf(*nov);return0;)(9)由键盘输入两个正整数m和n,求其最大公约数和最小公倍数。inc1udeintmainO(intm,n,t,r;intx;scanf(%d,%d”,&n):x=m*n;if(mn)(t=m;m=n:n=t:r=m%n;whi1e(r!=O)辗转相除法r=i%n;)Printf
9、C最大公约数烦d,最小公倍数为$dn”,n,xn);return0;)(IO)给一百分制成绩,要求输出成绩等级A、B、C、D、E090分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E方法一inc1udeintmain()(intscore;SCanf(“%d”,score);if(score=90&score=80&score=70&score=60&score70)printf(*Dn*):e1seif(score60)printf(*En*);e1seprintf(输入错误n);return0;方法二:inc1udeintmain()(intscore;sc
10、anf&score);switch(score/10)case10:case9:printf(*An*);break;case8:printf(*Bn*);break;case7:Printf(Cn);break;case6:Printf(Dn);break;case5:case4:case3:case2:caseOzprintfCEXn*);break;defau1t:Printf(输入错误n);)return0;)(H)输入某年某月某日,判断这一天是这一年的第几天?律inc1udeintmainO(intyear,month,day,days;scanf(*%d-%d-%d*,&year,
11、&month,&day);switch(month)(case1:days=day;break;case 1: days=31+day:break:case 2: days=31+28+day;break;case4:days=31+28+31+day:break;case5:days=31+28+31+30+day;break:case6:days=31+28+3130+31+day;break;case7:days=31+28+31+30+31+30+day:break:case8:days=31+28+31+30+31+30+31+day;break;case9:days=31+28+3
12、1+30+31+30+31+31+day;break;case10:days=31+28+31+30+31+30+31+31+30+day;break:case11:days=31+28+31+30+31+30+31+31+30+31+day;break:case12:days=31+28+31+30+31+30+31+31+30+31+30+day;break;defau1t:printf(*输入错误n);)if(year%4=0ftyeaib100!=0year%400=0)if(month=3)days+;)printf(*是一年的第d天n*,days);return0;)(12)输出所
13、有的3位水仙花数。所谓水仙花数是指所有位的数字的立方之和等于该数inc1udeintmain()(inta,b,c;for(inti=100;i1000;i+)(a=i%10;b=i10%10;c=i100%10;1 f(a*a*a+b*b*b+c*c*c=i)printf(*%d,i);return0;(13)由1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?inc1udeintmain()(inta,b,c;intn=0;用来表示数据个数for(a=1;a=4;a+)for(b=1;b=4;b+)for(c=1;c=4;c+)(if(a!=b&a!=c&b!=c)n+;printf(,%c1z,a*100+b*10+c);rintf(*n一共%d个n”,n);return0;(14)计算Fibonacci数列前20项的和。inc1udeintmain()(intf,f1,f2;ints:f1=f2=1;s=2;for(int