C语言程序设计(第三版)习题库答案_第1页
C语言程序设计(第三版)习题库答案_第2页
C语言程序设计(第三版)习题库答案_第3页
C语言程序设计(第三版)习题库答案_第4页
C语言程序设计(第三版)习题库答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计(第三版)习题库1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序#includemain()floatr,h,C1,Sa,Sb,Va,Vb;scanf(_”%f”_,&r);scanf(”%d”,_&h_);;C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(_”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f”,Cl,Sa,Sb,Va,Vb);2、输入一个

2、华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2小数。#includemain()floatF,c;scanf(%f,&F);c=5*(F-32)/9;printf(c=%.2f,c);xx13、有一函数:y=,2x-11x10写一程序,输入x值,输出y值。3x-11x10#includemain()intx,y;printf(输入x:);scanf(%d,&x);if(x1)/*x1*/y=x;printf(x=%3d,y=x=%dn,x,y);elseif(x10)/*110*/y=3*x-11;printf(x=%3d,y=3*x-11=%dn,x#in

3、cludestdio.hmain()intx,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;elsey=3*x-11;printf(%d,y);#includestdio.hmain()intx,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;elsey=3*x-11;printf(%dn,y);#includestdio.hmain()intx,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;elsey=3*x-11;printf(%d,y);scanf(%d,&x);if(x=1&x10)y=2*x-1;stdio.helses

4、tdio.hy=3*x-11;#includemain()intx,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;elsey=3*x-11;printf(%d,y);,y);4、给定一个不多于5位的正整数,要求:求它是几位数;按逆序打印出各位数字。例如原数为321,应输出123。#includemain()longintnum,m=0;inti=0;scanf(%ld,&num);while(num0)i+;/*统计长度*/m=m*10+num%10;num=num/10;printf(”数字长度为:%d,i);printf(逆序数字为:dn,m);5、以下程序实现的功能

5、:求三个数的最大值#includemain()inta,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab)if(ac)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;printf(max=%d,max);#includemain()intx,y,z,t=0;scanf(%d%d%d,&x,&y,&z);if(xy)t=y;y=x;x=t;if(xz)t=z;z=x;x=t;if(yz)t=z;z=y;y=t;printf(%dn,z);6、输入两个正整数m和n,求其最大公约数和最小公倍数。/*枚举法*/#includemain()lo

6、ngm,n,i=1,j,s;scanf(%ld,%ld,&m,&n);for(;i=m&i=n)j=m;elsej=n;for(;!(j%m=0&j%n=0);j+);printf(s=%ld,j=%ldn,s,j);#includemain()inta,b,k,temp,i,p;scanf(%d,%d,&a,&b);if(ab)temp=b;elsetemp=a;for(i=2;i=temp;i+)if(a%i=0&b%i=0)k=i;printf(%dn,k);p=a*b/k;printf(%dn,p);/*辗转相除*/#includemain()intm,n,k,j,p,r=1;scan

7、f(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;dor=k%j;k=j;j=r;while(r!=0);printf(%d,%d,k,m*n/k);/*反复减法*/#includemain()intm,n,k,j,p,r=1;scanf(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;dop=k-j;if(jp)k=j;j=p;elsek=p;while(p!=0);printf(%d,%d,k,m*n/k);7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数#includestdio.hmain()charc;inti=0,j=0,k=0,l

8、=0;while(c=getchar()!=n)if(c=A&c=a&c=0&c=9)j+;/数字统计elseif(c=)k+;/空格统计elsel+;printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l);8、求Sn=a+aa+aaa+aaaaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#includemain()inta,n;longb=0,sum=0;scanf(“%d%d”,&a,&n);for(i=1;i=n;i+)b=b*10+a;sum=sum+b;printf(“%ld”,sum);9、打印出所有

9、水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+33。【程序1】#includemain()inti,m,n,k;for(i=100;i1000;i+)m=_i%10_;n=_i/10%10_;k=i/100;if(_m*m*m+n*n*n+k*k*k=i_)printf(%5d,i);【程序2】#includemain()inti,a,n,s;for(i=100;i0)a=_n%10_;s+=a*a*a;n/=_10_;if(_s=i_)printf(“%d”,i);10、一个数如果恰好等于它的因子之和,这个数就称为完数。

10、例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子:6itsfactorsare1、2、3#includemain()inta,i,m;for(a=1;a=1000;a+)for(_i=1,m=0_;i=a/2;i+)if(!(a%i)_m+=i_;if(m=a)printf(“%4d”,a);11、利用:冗/4=1-1/3+1/5-1/7+.级数求冗的值,直到最后一项的绝对值小于10-6为止。求绝对值的函数为fabs()。#_include_#includemain()inti=1,flag=1;doublesum=0.0,s

11、;dos=_1.0/(2*i-1)_;sum+=s*flag;i+;_flag=-flag_;while(_fabs(s)1e-6_);/*/printf(pi=%f,_4*sum_);11、有一分数序列:2/1,3/2,5/3,求出这个数列的前20项之和。#include#defineN20main()inti=1;doublex=1,y=2,sum=0;while(_i=20_)sum=sum+_y/x_;y=_x+y_;x=_y-x_;i+;printf(%fn,sum);12、一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹

12、多高?#includemain()inti,n=10;doubleh=100,s=100;for(i=2;i=n;i+)h*=_0.5_;s=_s+h*2_;printf(s=%f,h=%fn,s,h);13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include#defineN10main()inti=1,sum=1;while(i+N)sum=_(sum+1)*2_;printf(sum=%dn,s

13、um);14、用迭代法求。求平方根的迭代公式为:要求前后两次求出的得差的绝对值少于0.00001。#include#includemain()floatx0,x1,a;scanf(%f,&a);x1=a/2;dox0=x1;x1=_(x0+a/x0)/2_;while(_x11e-5_);printf(%gn,x1);15、用牛顿迭代法求方程2x3-4x2,3x-60在1.5附近的根。#include#include_#definef(x)2*x*x*x-4*x*x+3*x-6main()doublex,y;x=_1.5_;doy=f(x);x=x-y/(6*x*x-8*x+3);while(

14、fabs(y)1e-6);printf(x=%.3fn,x);16、用二分法求方程2x3-4x2+3x-60在(-10,10)之间的根#include#include#definef(x)2x*x*x-4*x*x+3*x-6main()doublex1=-10,x2=10,x,y;dox=(x1+x2)/2;y=f(x);if(y1e-6);printf(x=%gn,x);17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如输入75输出C。请完成填空#includemain()intscore;scanf(_%d_,&score);switch(_score/10_)cas

15、e1:case2:case3:case4:case5:printf(“gradeEn”);_break_;case6:printf(“gradeDn”);break;case7:printf(“gradeCn”);break;case8:printf(“gradeBn”);break;case9:printf(“gradeAn”);break;_default_:printf(Errorinput!n);18、该程序功能:对x=1,2,.,10,求f(x)=x*x-5*x+sin(x)的最大值。#include#include#definef(x)x*x-5*x+sin(x)voidmain(

16、)intx;floatmax;_max=f(1)_;for(x=2;x=10;x+)_if(maxf(x)max=f(x)_;printf(%fn,max);19、程序功能:输入整数a和b的值,若a2+b2大于100,贝V输出a2+b2百位以上的数字,否则输出两数之和。#includemain()inta,b,s;scanf(%d%d,&a,&b);s=_a*a+b*b_;if(s100)printf(%d,_s/100_);elseprintf(%d,_a+b_);20、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程序统计卖完所需的天数。#includemain()

17、intday,x1,x2;day=0;x1=1020;while(_x10_)x2=_x1/2-2_;x1=x2;day+printf(“day=%d”,day);21、找出整数的所有因子#includemain()inti,x;scanf(“%d”,&x);i=1;for(;_i=x/2_;)if(x%i=0)printf(%d”,i);i+;22、统计用数字0-9可以组成多少个各位上的数字没有重复的3位偶数。#includemain()intn=0,i,j,k;for(i=1;i=9;i+)for(k=0;k=8;_k+=2_)if(k!=i)for(j=0;j=9;j+)if(_j!=i

18、&j!=k_)n+;printf(“n=%dn”,n);23、用100元换成1、2、5元的所有兑换方案。#includemain()inti,j,k,l=0;for(i=0;i=20;i+)for(j=0;j=50;j+)k=_(100-i-2*j)/5_;if(_i+j*2+k*5=100_)printf(“%2d%2d%2d”,i,j,k);l=l+1;if(l%5=0)printf(“n”);24、输出1-100之间满足每位数的乘积大于每位数的和的数#includemain()intn,k=1,s=0,m;for(n=1;n0_)k*=m%10;s+=m%10;_m/=10_;if(ks

19、)printf(“%d”,n);25、从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。#includemain()inti,j,k;for(i=0;i=3;i+)for(_j=1_;j=0_)printf(“%3d%3d%3dn”,i,j,k);26、以下程序的功能是:判断一个四位数是否满足这样的条件:它的9倍刚好是它的反序数。反序数是指整数各个位上的数字逆序所形成的整数。请完成程序的填空。#includemain()inti,a,b,c,d,m;for(i=1000;i+)a=_i%10_;b=i/10%10;c=i/100%10;d=i/1000;m=

20、_a*1000+b*100+c*10+d_;if(_m=i*9_)_break_;printf(i=%d,i);27、以下程序完成两整数的交换。#includemain()inta,b;printf(“请依次输入a,b的值:”);scanf(“%d,%d”,_&a,&b_);a=a+b;_b=a-b_;_a=a-b_;printf(交换后:a=%d,b=%d”,a,b);28、以下程序的功能是判断输入的年份是否为闰年,若是则输出”yes”,否则输出”No”。#includemain()intyear;scanf(“%d”,&year);if(_year%400=0|year%4=0&year%

21、100!=0_)printf(“yes”);elseprintf(“No”);29、以下程序利用冒泡排序法对输入的10个数进行排序。#include#defineN10voidmain()intaN;inti,j,t;printf(“input10numbers:n);for(i=0;iN;i+)scanf(%d,_&ai_);printf(n);for(j=0;jN-1;j+)for(i=0;iai+1_)t=ai;ai=ai+1;ai+1=t;printf(“thesortednumbers:n);for(i=0;iN;i+)printf(“%d“,ai);printf(“n);30、用筛

22、法求100之内的素数。筛法素数的思想是:1、取最小的数2,并声明它是素数,同时筛去它及它的倍数。2、取未筛去数中最小的数,并声明它是素数,同时筛去它及它的倍数。3、重复步骤2至筛中无数,得到所有的素数。#include#defineM100/范围#defineN(M+1)/2)/奇数的个数voidmain()inti,j,aN;a0=2;for(i=1;iN-1;i+)/*初始数组实现第一步筛选*/ai=2*i+1;for(i=1;iN-1;i+)/*第二步筛选*/if(_ai!=0_)for(j=i+1;jN;j+)if(_aj%ai=0_)/*倍数时置零筛去*/aj=0;printf(nTheprimerare2-%d:n,M);for(i=0,j=0;iN;i+)/*显示得到素数*/if(_ai!=0_)printf(%5d,ai);if(+j)%10=0)/*十个数换行*

温馨提示

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

评论

0/150

提交评论