《C语言程序设计 王新萍 各章程序设计实践题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 王新萍 各章程序设计实践题答案.docx(16页珍藏版)》请在第一文库网上搜索。
1、附录In各章程序设计实践题答案第一章1 .编写程序,输出以下信息:* * TurboC*程序如下:ttinc1ude*stdio.hmain()(Printf(*);Printf(*TurboC*);Printf(*);)2 .编写程序,用输出字母“E”的图案。程序如下:inc1ude“stdio.hmain()(Printf(*);Printf(*);Printf(*);Printf(*);Printf(*);)第二章1编写程序,将“China”译成密码。密码规律:用原来的字母后面第4个字母代替原来的字母,例如:字母“A”后面第4个字母是来的用“E”代替来的因此,“China”应译为G1mr
2、ew并输出。程序如下:ttinc1ude“stdio.hmain()charc1=C,,c2=*h,c3=i,c4=n,,c5=a;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是%c%c%c%c%cn”,c1,c2,c3,c4,c5);)2 .编写程序,将一个三位数整数256的个位、十位和百位分离后输出,输出结果为a=2,b=5,c=60程序如下:#inc1ude“stdio.hmain()(intm=256;a=m100;b=(ma*100)10;c=m%10;Printf(a=%d,b=%d,c=%dn”,a,b,c);)3 .已知x=3.6,y=4.2
3、。编写程序,求表达式x+y及(int)x%(int)(x+y)的值。程序如下:#inc1udestdio.hmain()(f1oatx=3.6,y=4.2;intc;c=(int)x%(int)(x+y)printfx+y=%f,(int)x%(int)(x+y)=%dn”,x+y,c);)第三章1 .己知银行定期存款的年利率rate为2.25%,并己知存款期为n年,存款本金为capita1元,编写程序,计算n年后的本利之和deposito要求定期存款的年利率rate.存款期n和存款本金CaPitaI均由键盘输入。程序如下:#inc1udemath,h”#inc1udestdio.hmain(
4、)(intn;doub1erate;doub1ecapita1;doub1edeposit;Printf(P1easeenterrate,year,capita1:,z);scanf(z,%1f,%d,%1fz,ftrate,&n,&capita1);deposit=capita1*pow(1+rate,n);Printf(deposit=%fn”,deposit);)2 .己知圆半径为r,编写程序,求圆的周长和面积。要求圆的半径为r由键盘输入。程序如下:ttinc1ude*stdio.hmain()(intr,1,s;scanf(%d,&r);1=2*3.14*r;s=3.14*r*r;pr
5、intf(*1=%d,s=%d”,1,s);)3 .编写程序,输入一个华氏温度,要求输出摄氏温度,公式为C=59(F-32),输出结果取两位小数。程序如下:ttinc1ude“stdio.hmain()(f1oatc,f;Printf(“请输入一个华氏温度:n);scanf(%f,&f);c=(5.0/9.0)*(f-32);Printf(摄氏温度为:%5.2fn,c);)4 .己知a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1,a,c2-b。编写程序,使程序能得到以下的输出格式和结果。a=3b=4C=5X=1200000,y=2.4000
6、00,z=-3.600000x+y=3.60y+z=-1.20z+x=-2.40u=51274n=128765c1=aor97(ASCII)c2=b,or98(ASCII)程序如下:#inc1ude“stdio.hmain()(inta,b,c;1ongintu,n;f1oatx,y,z;charc1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274jn=128765;c1=,a,;c2=b,;printf(*nz,);printf(a=%2db=%2dc=%2dn”,a,b,c);printf(x=%8.6f,y=%8.6f,z=%9.6fn”,x,y,z)
7、;printf(*x+y=%5.2fy+z=%5.2fz+x=%5.2fn”,x+y,y+z,z+x);printf(z,u=%61dn=%91dn”,u,n);printf(*c1,%c,or%d(ASCII)n*,c1,c1);printf(*c2,%c,or%d(ASCII)z,c2,c2);)第四章1.求一元二次方程ax2+bx+c=0的根。分析:求解一元二次方程的根首先要检查方程式二次项的系数a和一次项的系数b是否等于0,来确定方程是否有解。然后计算方程的判别式(b2-4ac)的值,根据该判别式的值来决定方程是:(1)有一对实数根当(b2-4ac)0时。(2)有一对相等的实数根当(b
8、2-4ac)=0时。(3)有一对复数根当(bJ4ac)0时。源码:#inc1udestdio.hmain()(f1oata,b,c,d,x1,x2,p,q;printf(请输入的三个系数a,b,c:n);scanf(f,%f,%f,&a,&b,&c);Printf(方程的解是n);if(fabs(a=1e-6)Printf(不是一个二次方程);e1sed=b*b-4*a*c;if(fabs(d)1e-6)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);Printf(有两个相异的实根:%7.3fand%7.3fnx1,x2w);)e1sep=b(2*a);q=
9、sqrt(-d)/(2*a);Printf(有两个复根:n);printf(zz%7.3f+%7.3fn”,p,q);printf(z,%7.3f-%7.3fn”,p,q);运行结果:请输入的三个系数a,b,c:5,8,4方程的解是有两个复根:-0.800+0.400i-0.800-0.400i请输入的三个系数a,b,c:1,2,T5方程的解是有两个相异的实根:3.00and-5.002 .计算器程序。用户输入运算数和四则运算符,输出计算结果。分析:本例是四则运算求值问题。根据输入运算符不同来进行不同的运算,是一个典型多分支选择结构,switch语句用于判断运算符,根据输入的运算符不同来执行不
10、同的语句,然后输出运算值。当输入运算符不是+、-、*、/时给出错误提示。源码:#inc1ude“stdio.hmain()(intf1,f2;intresu1t;charch;scanf(%c”,&ch);scanf(%d”,&f1);scanfC%d&f2):switch(ch)(case+:resu1t=f1+f2;break;case,-:resu1t=f1-f2;break;case*:resu1t=f1*f2;break;case:resu1t=f1/f2;break;defau1t:resu1t=-9999;break;)if(resu1t!=-9999)printf(*%d%c%
11、d=%dn*,f1,ch,f2,resu1t);e1sePrintf(输入运算符不正确!);)输入:+1324回车输出:13+24=373 .输入学生某科成绩,输出其等级。成绩90,100为A等,成绩80,89为B等,成绩60,79为C等,60分以下为D等。程序1:用if语句(文件名为ex4_3.c)#inc1ude“conio.hmain()(intscore,x;chargrade;c1rscr();printf(z,nP1easeinputscore0,100:);scanf(%d”,ftscore);if(score=90)Printf(A);e1seif(score=80)Print
12、f(B);e1seif(score=60)Printf(C);e1sePrintf(D);)程序2:用switch语句(文件名为CX4_4.c)#inc1ude“conio.hmain()(intscore,x;chargrade;c1rscr();printf(*nP1easeinputscore0,100:);scanf(%d”,&score);x=score10;switch(x)(case10:case9:Printf(A);break;case8:Printf(B);break;case7:case6:Printf(C);break;case5:case4:case3:case2:c
13、ase1:case0:Printf(D);break;defau1t:printf(zzInputError!*);)第五章1百钱百鸡问题。中国占代数学家张丘建在他的算经中提出了一个著名的“百钱百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?分析:设鸡翁、鸡母、鸡雏的个数分别为x,y,z。题意给定共IOO钱要买百鸡,若全买公鸡最多买20只,显然X的值在020之间;同理,y的取值范围在033之间,可得到下面的不定方程:5x+3y+z3=100x+y+z=100此问题可归结为求这个不定方程的整数解。在分析确定方程中未知数变化范围的前提下,可通过对未知数可
14、变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。#inc1ude*stdio.hmain()(intx,y,z;Printf(下面是百钱买百鸡的答案:n);for(x=0;x=20;x+)for(y=0;y=33;y+)(z=100-y;if(z%3=0&5*x*3+z/3=100)Printf(%2d:公鸡=%2d,母鸡=%2d,雏鸡=%2dn”,+j,x,y,z);)输出结果:下面是百钱买百鸡的答案:1:公鸡=0,母鸡=25,雏鸡=752:公鸡=4,母鸡=18,雏鸡=783:公鸡=8,母鸡=11,雏鸡=814:公鸡=12,母鸡=14,雏鸡=842.对用户输入的所有整数进行累加,直到输出0为止。分析:S1:用户输入整数存入变量