《C语言程序设计习题3PDF.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计习题3PDF.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、仲恺农业工程学院页脚内容 1习题 3 参考解答1.什么是算法?常用描述算法的工具有哪些?解:所谓算法, 就是计算机解决某一个问题的具体方法和步骤。常用描述算法的工具有流程图、N-S 图。2.试用流程图表示求3个数中的最大数的算法。解: 流程图如图 1-1所示。仲恺农业工程学院页脚内容 2图 1-1 求 3 个数中的最大数的流程图3.什么是结构化程序设计?它的主要内容是什么?解:结构化程序设计( structured programming )是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用3种基本控制结构构造程序,任何程序都可由顺
2、序、选择、循环这3种基本控制结构构造。仲恺农业工程学院页脚内容 34.从键盘输入 3 个整数,按照从小到大的顺序输出。解:#includeint main()int a,b,c,temp;scanf(%d,%d,%d,&a,&b,&c);if(ab)temp=a;a=b;b=temp;if(ac)temp=a;a=c;c=temp;if(bc)temp=b;b=c;c=temp;printf(%d,%d,%dn,a,b,c);return 0;程序运行情况如下:12,8,29 8,12,295.输入一个华氏温度 F,要求输出摄氏温度C 。公式为仲恺农业工程学院页脚内容 45(32)9CF要求要
3、有文字说明,取两位小数。解:#includeint main()float f,c;printf( 请输入一个华氏温度: n);scanf(%f,&f);c=5*(f-32)/9;printf(%.2fn,c);return 0;程序运行情况如下:请输入一个华氏温度:36仲恺农业工程学院页脚内容 52.226输入一个三位整数,要求输出它的百位数、十位数和个位数。解:#includeint main()int num; /* num 表示一个三位整数*/int a,b,c; /* a,b,c 分别表示百位、十位和个位上的数字*/scanf(%d,&num);a=num/100;b=(num-a*
4、100)/10;c=num-a*100-b*10;printf(%d,%d,%dn,a,b,c);return 0;程序运行情况如下:123仲恺农业工程学院页脚内容 61,2,37小红有面值 1分的硬币 638枚,可以兑换成几元几角剩余几分?说明:100枚 1分的硬币可以兑换成1元,10枚 1分的硬币可以兑换成1角。兑换原则是面额从大到小。解:#includeint main()int a=638;int yuan;int jiao;int fen,temp;yuan=a/100;temp=a%100;jiao=temp/10;fen=temp%10;printf(1 元的数量: %dn,yu
5、an);printf(1 角的数量: %dn,jiao);仲恺农业工程学院页脚内容 7printf(1 分的数量: %dn,fen);return 0;程序运行结果如下:1元的数量: 61角的数量: 31分的数量: 88设圆柱的半径为 2.5,圆柱的高为 4,求圆柱的体积。用 scanf函数输入数据, printf 函数输出计算结果,输出时要求有文字说明,取两位小数。解:#include#define PI 3.1415926int main()float r,h,v;printf(Please input r,h:);scanf(%f,%f,&r,&h);仲恺农业工程学院页脚内容 8v=PI
6、*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个边长进行判断,如果能构成三角形,则计算三角形的面积;否则,则显示“构不成三角形!”信息。解:#include#includeint main()int a,b,c;float s,area;scanf(%d,%d,%d,&a,&b,&c);仲恺农业工程学院页脚内容 9if(a+bc & a
7、+cb &b+ca)s=(float)(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf( 面积为: %.2fn,area);elseprintf(边长分别为 %d、%d、%d的三边构不成三角形! n,a,b,c);return 0;程序运行情况如下:3,4,6面积为: 5.333,6,12 边长分别为 3、6、12的三边构不成三角形 !10设计一个 C语言程序,求 5个数中的最大数和最小数。解:仲恺农业工程学院页脚内容 10#includeint main()int a,b,c,d,e,max,min;scanf(%d%d%d%d%d,&a,&b,&
8、c,&d,&e);max=min=a;if(bmax) max=b;if(bmax) max=c;if(cmax) max=d;if(dmax) max=e;if(emin) min=e;printf(max:%d,min:%dn,max,min);return 0;仲恺农业工程学院页脚内容 11程序运行情况如下:2 5 6 8 9max:9,min:211 判断输入的字符属于哪一类字符:大写字母、小写字母、数字还是其他字符。解:#includeint main()char ch;scanf(%c,&ch);if(ch=48 &ch=65&ch=97&ch=122)printf( 该字符为小写
9、字母! );else 仲恺农业工程学院页脚内容 12printf(该字符为其他字符! );return 0;程序运行情况如下:2该字符为数字!12用 if 语句和 switch语句分别编写程序,实现以下功能:从键盘输入数字1,2,3,4,分别显示 Excellent ,Good ,Pass ,Fail。输入其他字符时显示Error。解:/* 用 if 语句编写程序 */#includeint main()char ch;scanf(%c,&ch);if(ch=1)printf(Excellentn);仲恺农业工程学院页脚内容 13else if (ch=2)printf(Goodn);else
10、 if (ch=3) printf(Passn);else if (ch=4) printf(Failn);elseprintf(Errorn);return 0;程序运行情况如下:1Excellent/* 用 switch语句编写程序 */#includeint main()仲恺农业工程学院页脚内容 14char ch;scanf(%c,&ch);switch(ch)case 1:printf(Excellentn);break;case 2:printf(Goodn);break;case 3:printf(Passn);break;case 4:printf(Failn);break;d
11、efault:printf(Errorn);程序运行情况如下:1Excellent13 假设国家对个人收入所得税是按这样的标准进行的:起征点是 2 000元, 2 0003 000元为 5%, 3 0005 000元为 15% ,5 00010 000元为 20%,10 000元以上为 30%。编程输入工资,计算实际工资所得及税金。仲恺农业工程学院页脚内容 15解:#includeint main()int gz;float sj;scanf(%d,&gz);if(gz2000)printf(不需要纳税! n);return ;else if(gz3000)sj=gz*0.05;else if
12、(gz5000)sj=gz*0.15;else if(gz0时,有两个不等的实根;当b2-4ac=0时,有两个相等的实根;当b2-4ac0时,有两个虚根。解:#include#includeint main()int a,b,c;double delt,x1,x2;scanf(%d%d%d,&a,&b,&c);delt=b*b-4*a*c;if (delt=0)printf(该方程有两个相等的实根!);x1=x2=-(double)b/(2*a);printf(%.2f,%.2fn,x1,x2);仲恺农业工程学院页脚内容 18else if(delt=0)x1=(-b+sqrt(delt)/(
13、2*a);x2=(-b-sqrt(delt)/(2*a);printf(%.2f,%.2fn,x1,x2);elseprintf( 该方程无实根! n);程序运行情况如下:3 4 5该方程无实根!4 6 2-0.50,-1.004 4 1 仲恺农业工程学院页脚内容 19该方程有两个相等的实根!-0.50,-0.5015从 1100中找出能被 5或 7整除的数。解:#includeint 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
14、 35 40 42 45 49 5055 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100仲恺农业工程学院页脚内容 2016计算 sum=1+11+111+1111+11111。解:#includeint 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;程序运行结果如下:1仲恺农业工程学院页脚内容 21111111111111111234517输入两个正整数m和 n,求出它们的最大公约数和最小公倍数。解:#includeint m
15、ain()int m,n,t,gcd,gcm;int a,b;scanf(%d%d,&m,&n);t=m%n;a=m;b=n;while(t!=0)仲恺农业工程学院页脚内容 22m=n;n=t;t=m%n;gcd=n;gcm=a*b/gcd;printf(%d 和%d的最大公约数为 :%d,最小公倍数为 :%dn,a,b,gcd,gcm);return 0;程序运行情况如下:25 15 25 和 15的最大公约数为 :5,最小公倍数为 :7518输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。解:#includeint main()仲恺农业工程学院页脚内容 23char ch
16、;int m=0;int k=0;int n=0;int t=0;ch=getchar();while(ch!=n)if(ch=32)k+;else if(ch=48& ch=65& ch=97& ch=122)m+;elset+;ch=getchar();仲恺农业工程学院页脚内容 24printf( 字母的个数为: %dn,m);printf( 空格的个数为: %dn,k);printf( 数字的个数为: %dn,n);printf( 其他字符的个数为: %dn,t);return 0;程序运行情况如下:123abcdefghyyyy; ;11166 #%字母的个数为: 12空格的个数为:
17、2数字的个数为: 8其他字符的个数为: 1119从键盘输入 10个学生的成绩,试统计出他们的成绩总和及平均值。解:#includeint main()仲恺农业工程学院页脚内容 25float 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,sum,aver);return 0;程序运行情况如下:68 75 74 56 78 75 81 76 75 85sum=743.00,aver=74.3020猴子吃桃问题。猴子第一天摘下了若干桃子,当即吃了一
18、半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第4 天早上想要再吃时,只剩下一个桃子了。求第一天猴子共摘了多少桃子。仲恺农业工程学院页脚内容 26解:#includeint main()int n=1;int i;for(i=9;i=1;i-) n=2*(n+1);printf(%dn,n);return 0;程序运行结果如下:41022仲恺农业工程学院页脚内容 274694190382766153421打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如, 153就是一个水仙花数
19、,因为153=13+53+33解:#includeint main()int i,bw,sw,gw;printf( 水仙花数是: );for(i=100;i999;i+)bw=i/100;仲恺农业工程学院页脚内容 28sw=(i-bw*100)/10;gw=i-bw*100-sw*10;if(i=bw*bw*bw+sw*sw*sw+gw*gw*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!解:#incl
20、udeint main()int i=1;仲恺农业工程学院页脚内容 29long 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);return 0;程序运行结果如下:2.71823输入一个整数,分解各位数字。例如,输入“1298 ” ,输出“ 8-9-2-1- ” 。请编写一个C语言程序解决该问题。解:仲恺农业工程学院页脚内容 30#includeint main()int num,n1,n2;scanf(%d,&num);n2=num;while(n2!=0)n1=n2%10;
21、n2=n2/10;printf(%d-,n1);printf(n);return 0;程序运行情况如下:1298 仲恺农业工程学院页脚内容 318-9-2-1-24有一个分数序列2/1,3/2 ,5/3 ,8/5 ,13/8,21/13求出这个数列的前20项之和。解:#includeint 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;仲恺农业工程学院页脚内容 32printf(分数序列之和为: %f,s) ;return 0;程序运行结果如下:分数序列之和为
22、: 32.66025925打印出以下图案。解:#includeint main()int i,j;for(i=1;i=4;i+)* * * * * * * * * * * * *仲恺农业工程学院页脚内容 33for(j=1;j20-i;j+)printf( );for(j=1;j=1;i-)for(j=1;j20-i;j+)printf( ); for(j=1;j=2*i-1;j+) printf(*);仲恺农业工程学院页脚内容 34printf(n);return 0;26百马百担问题:有100匹马,驮 100担货,大马驮 3担,中马驮 2担,两匹小马驮 1担,问用大马、中马、小马各多少匹?
23、请设计解决该问题的C语言程序。解:#includeint main()int dm;for(dm=0;dm=33;dm+)int zm;for(zm=0;zm=50;zm+)int xm;仲恺农业工程学院页脚内容 35xm=100-dm-zm;if(3*dm+2*zm+xm/2=100) printf(%d,%d,%dn,dm,zm,xm);return 0;程序运行结果如下:1,32,672,30,684,27,695,25,707,22,718,20,7210,17,7311,15,7413,12,7514,10,76仲恺农业工程学院页脚内容 3616,7,7717,5,7819,2,7920,0,8027计算 110十个整数的阶乘和,即计算1!+2!+3!+ +9!+10!解:#includeint main()int i,j;long fact,sum=0;for(i=1;i=10;i+)fact=1;for(j=1;j=i;j+)fact=fact*j;仲恺农业工程学院页脚内容 37sum=sum+fact;printf(sum:%ldn,sum);return 0;程序运行结果如下:sum:4037913
限制150内