C语言程序设计习题3_第1页
C语言程序设计习题3_第2页
C语言程序设计习题3_第3页
C语言程序设计习题3_第4页
C语言程序设计习题3_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、习题3参考解答1.什么是算法?常用描述算法的工具有哪些?解:所谓算法,就是计算机解决某一个问题的具体方法和步骤。常用描述算法的工具有流程图、N-S图。2.试用流程图表示求3个数中的最大数的算法。解:流程图如图1-1所示。图1-1 求3个数中的最大数的流程图3.什么是结构化程序设计?它的主要内容是什么?解:结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用3种基本控制结构构造程序,任何程序都可由顺序、选择、循环这3种基本控制结构构造 。4.从键盘输入3个整数,按照从小到大的

2、顺序输出。解:#include<stdio.h>int main()int a,b,c,temp; scanf("%d,%d,%d",&a,&b,&c); if(a>b)temp=a;a=b;b=temp; if(a>c)temp=a;a=c;c=temp; if(b>c)temp=b;b=c;c=temp; printf("%d,%d,%dn",a,b,c); return 0;程序运行情况如下:12,8,298,12,295.输入一个华氏温度F,要求输出摄氏温度C。公式为 要求要有文字说明,取两位

3、小数。解:#include<stdio.h>int main()float f,c; printf("请输入一个华氏温度:n"); scanf("%f",&f); c=5*(f-32)/9; printf("%.2fn",c); return 0;程序运行情况如下:请输入一个华氏温度:362.226输入一个三位整数,要求输出它的百位数、十位数和个位数。解:#include<stdio.h>int main()int num; /* num表示一个三位整数 */ int a,b,c; /* a,b,c分别

4、表示百位、十位和个位上的数字 */ scanf("%d",&num); a=num/100; b=(num-a*100)/10; c=num-a*100-b*10; printf("%d,%d,%dn",a,b,c); return 0;程序运行情况如下:1231,2,37小红有面值1分的硬币638枚,可以兑换成几元几角剩余几分?说明:100枚1分的硬币可以兑换成1元,10枚1分的硬币可以兑换成1角。兑换原则是面额从大到小。解:#include<stdio.h>int main()int a=638; int yuan;int jia

5、o;int fen,temp;yuan=a/100;temp=a%100;jiao=temp/10;fen=temp%10;printf("1元的数量:%dn",yuan); printf("1角的数量:%dn",jiao); printf("1分的数量:%dn",fen);return 0;程序运行结果如下:1元的数量:61角的数量:31分的数量:88设圆柱的半径为2.5,圆柱的高为4,求圆柱的体积。用scanf函数输入数据,printf函数输出计算结果,输出时要求有文字说明,取两位小数。解: #include<stdio.h

6、> #define PI 3.1415926 int main()float r,h,v;printf("Please input r,h:");scanf("%f,%f",&r,&h);v=PI*r*r*h;printf("半径为:%.2f,高为:%.2f的圆柱体体积为:%.2fn",r,h,v);return 0;程序运行情况如下:Please input r,h:2.5,4半径为:2.50,高为:4.00的圆柱体体积为:78.549输入三角形的三边,计算三角形的面积。要求:对输入的3个边长进行判断,如果能构

7、成三角形,则计算三角形的面积;否则,则显示“构不成三角形!”信息。解:#include<stdio.h>#include<math.h>int main()int a,b,c;float s,area;scanf("%d,%d,%d",&a,&b,&c);if(a+b>c && a+c>b &&b+c>a)s=(float)(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf("面积为:%.2fn",area);e

8、lseprintf("边长分别为%d、%d、%d的三边构不成三角形!n",a,b,c);return 0;程序运行情况如下:3,4,6面积为:5.333,6,12边长分别为3、6、12的三边构不成三角形!10设计一个C语言程序,求5个数中的最大数和最小数。解:#include<stdio.h>int main()int a,b,c,d,e,max,min;scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);max=min=a;if(b>max) max=b;if(b<min

9、) min=b;if(c>max) max=c;if(c<min) min=c;if(d>max) max=d;if(d<min) min=d;if(e>max) max=e;if(e<min) min=e;printf("max:%d,min:%dn",max,min);return 0;程序运行情况如下:2 5 6 8 9max:9,min:211判断输入的字符属于哪一类字符:大写字母、小写字母、数字还是其他字符。解:#include<stdio.h>int main()char ch;scanf("%c&quo

10、t;,&ch); if(ch>=48 &&ch<=57) printf("该字符为数字!");else if(ch>=65&&ch<=91)printf("该字符为大写字母!");else if(ch>=97&&ch<=122) printf("该字符为小写字母!"); else printf("该字符为其他字符!");return 0;程序运行情况如下:2该字符为数字! 12用if语句和switch语句分别编写程序,实现以

11、下功能:从键盘输入数字1,2,3,4,分别显示Excellent,Good,Pass,Fail。输入其他字符时显示Error。解:/*用if语句编写程序*/#include<stdio.h>int main() char ch; scanf("%c",&ch); if(ch='1') printf("Excellentn"); else if (ch='2') printf("Goodn"); else if (ch='3') printf("Passn&q

12、uot;); else if (ch='4') printf("Failn"); else printf("Errorn"); return 0;程序运行情况如下:1Excellent/*用switch语句编写程序*/#include<stdio.h>int main() char ch;scanf("%c",&ch);switch(ch) case '1':printf("Excellentn");break; case '2':printf(&

13、quot;Goodn");break; case '3':printf("Passn");break; case '4':printf("Failn");break; default:printf("Errorn");程序运行情况如下:1Excellent13假设国家对个人收入所得税是按这样的标准进行的:起征点是2 000元,2 0003 000元为5%,3 0005 000元为15%,5 00010 000元为20%,10 000元以上为30%。编程输入工资,计算实际工资所得及税金。解:#i

14、nclude<stdio.h>int main()int gz;float sj;scanf("%d",&gz);if(gz<2000)printf("不需要纳税!n");return ;else if(gz<3000)sj=gz*0.05;else if(gz<5000) sj=gz*0.15;else if(gz<10000)sj=gz*0.2;else sj=gz*0.3;printf("工资为:%d,税金为:%.2fn",gz,sj);return 0;程序运行情况如下:1500不需

15、要纳税!2800工资为:2800,税金为:140.004500工资为:4500,税金为:675.008500工资为:8500,税金为:1700.0020000工资为:20000,税金为:6000.0014求方程ax2+bx+c=0的根。说明:当b2-4ac>0时,有两个不等的实根;当b2-4ac=0时,有两个相等的实根;当b2-4ac<0时,有两个虚根。解:#include<stdio.h>#include<math.h>int main()int a,b,c;double delt,x1,x2;scanf("%d%d%d",&a

16、,&b,&c); delt=b*b-4*a*c; if (delt=0)printf("该方程有两个相等的实根!");x1=x2=-(double)b/(2*a);printf("%.2f,%.2fn",x1,x2);else if(delt>=0)x1=(-b+sqrt(delt)/(2*a); x2=(-b-sqrt(delt)/(2*a); printf("%.2f,%.2fn",x1,x2);elseprintf("该方程无实根!n");程序运行情况如下:3 4 5该方程无实根!4 6

17、 2-0.50,-1.004 4 1该方程有两个相等的实根!-0.50,-0.5015从1100中找出能被5或7整除的数。解:#include<stdio.h>int main() int i; for(i=1;i<=100;i+) if(i%5=0|i%7=0) printf("%5d",i); return 0; 程序运行结果如下:5 57 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 10016计算sum=1+11+111+

18、1111+11111。解:#include<stdio.h>int main()int i,t=0,s=0; for(i=1;i<=5;i+) t=t*10+1; printf("%dn",t); s=s+t; printf("%d",s);return 0;程序运行结果如下:1111111111111111234517输入两个正整数m和n,求出它们的最大公约数和最小公倍数。解:#include<stdio.h>int main()int m,n,t,gcd,gcm;int a,b;scanf("%d%d"

19、;,&m,&n); t=m%n;a=m;b=n;while(t!=0)m=n;n=t; t=m%n;gcd=n;gcm=a*b/gcd;printf("%d和%d的最大公约数为:%d,最小公倍数为:%dn",a,b,gcd,gcm);return 0;程序运行情况如下:25 1525和15的最大公约数为:5,最小公倍数为:7518输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。解:#include<stdio.h>int main()char ch;int m=0; int k=0; int n=0; int t=0;ch=ge

20、tchar();while(ch!='n')if(ch=32) k+; else if(ch>=48&& ch<=57) n+; else if(ch>=65&& ch<=90|ch>=97&& ch<=122) m+; else t+; ch=getchar(); printf("字母的个数为:%dn",m); printf("空格的个数为:%dn",k);printf("数字的个数为:%dn",n); printf("其他

21、字符的个数为:%dn",t); return 0;程序运行情况如下:123abcdefghyyyy;11166 #%字母的个数为:12空格的个数为:2数字的个数为:8其他字符的个数为:1119从键盘输入10个学生的成绩,试统计出他们的成绩总和及平均值。解:#include<stdio.h>int main()float cj,sum=0,aver; int i;for(i=1;i<=10;i+)scanf("%f",&cj);sum=sum+cj;aver=sum/10;printf("sum=%.2f,aver=%.2f&qu

22、ot;,sum,aver);return 0;程序运行情况如下:68 75 74 56 78 75 81 76 75 85sum=743.00,aver=74.3020猴子吃桃问题。猴子第一天摘下了若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第4天早上想要再吃时,只剩下一个桃子了。求第一天猴子共摘了多少桃子。解:#include<stdio.h>int main()int n=1; int i; for(i=9;i>=1;i-) n=2*(n+1); printf("%d

23、n",n); return 0;程序运行结果如下:410224694190382766153421打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153就是一个水仙花数,因为153=13+53+33解:#include<stdio.h>int main()int i,bw,sw,gw; printf("水仙花数是:");for(i=100;i<999;i+)bw=i/100;sw=(i-bw*100)/10;gw=i-bw*100-sw*10; if(i=bw*bw*bw+sw*sw*sw+gw*gw

24、*gw)printf("%5d",i);printf("n");return 0;程序运行结果如下:水仙花数是: 153 370 371 40722用泰勒级数求e的近似值,直到最后一项小于10-6为止。 e=1+1/1!+1/2!+1/3!+1/n!解: #include<stdio.h>int main() int i=1;long f=1;double t=1,e=1;while(t>=1e-6) e=e+t;i=i+1;f=f*i;t=(double)1/f; printf("%.3lfn",e); retur

25、n 0;程序运行结果如下:2.71823输入一个整数,分解各位数字。例如,输入“1298”,输出“8-9-2-1-”。请编写一个C语言程序解决该问题。解:#include<stdio.h>int main() int num,n1,n2;scanf("%d",&num);n2=num;while(n2!=0)n1=n2%10;n2=n2/10;printf("%d-",n1);printf("n");return 0;程序运行情况如下:12988-9-2-1-24有一个分数序列2/1,3/2,5/3,8/5,13/

26、8,21/13求出这个数列的前20项之和。解:#include<stdio.h>int main() int i; float f,s=0; float f1=1; float f2=1; for(i=1;i<=20;i+) f=f1+f2; f1=f2; f2=f; s=s+f2/f1; printf("分数序列之和为:%f",s) ; return 0;程序运行结果如下:分数序列之和为:32.660259 25打印出以下图案。 * * * * * * * * * * * * * * * * * * * 解:#include<stdio.h>int main()int i,j; for(i=1;i<=4;i+

温馨提示

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

评论

0/150

提交评论