您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > C语言程序设计(第三版)习题库答案
C语言程序设计(第三版)习题库1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。#includestdio.hmain(){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、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2小数。#includestdio.hmain(){floatF,c;scanf(%f,&F);____c=5*(F-32)/9______;printf(c=%.2f,c);}3、有一函数:10113101121xxxxxxy写一程序,输入x值,输出y值。#includestdio.hmain(){intx,y;printf(输入x:);scanf(%d,&x);if(x1){/*x1*/y=x;printf(x=%3d,y=x=%d\n,x,y);}elseif(____x10_______){/*1≤x-10*/_____y=2*x-1_______;printf(x=%3d,y=2*x-1=%d\n,x,y);}else{/*x≥10*/y=3*x-11;printf(x=%3d,y=3*x-11=%d\n,x#includestdio.hmain(){intx,y;scanf(%d,&x);if(x1){y=x;}elseif(x=1&&x10){y=2*x-1;}else{y=3*x-11;}printf(%d,y);}#includestdio.hmain(){intx,y;scanf(%d,&x);if(x1){y=x;}elseif(x=1&&x10){y=2*x-1;}else{y=3*x-11;}printf(%d\n,y);}#includestdio.hmain(){intx,y;scanf(%d,&x);if(x1){y=x;}elseif(x=1&&x10){y=2*x-1;}else{y=3*x-11;}printf(%d,y);}scanf(%d,&x);if(x1){y=x;}elseif(x=1&&x10){y=2*x-1;}else{y=3*x-11;}#includestdio.hmain(){intx,y;scanf(%d,&x);if(x1)y=x;elseif(x=1&&x10)y=2*x-1;elsey=3*x-11;printf(%d,y);},y);}}4、给定一个不多于5位的正整数,要求:①求它是几位数;②按逆序打印出各位数字。例如原数为321,应输出123。#includestdio.hmain(){longintnum,m=0;inti=0;scanf(%ld,&num);while(num0){i++;/*统计长度*/m=m*10+num%10;num=num/10;}printf(数字长度为:%d,i);printf(逆序数字为:%d\n,m);}5、以下程序实现的功能:求三个数的最大值#includestdio.hmain(){inta,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab){if(ac)max=a;elsemax=c;}else{if(bc)max=b;elsemax=c;}printf(max=%d,max);}#includestdio.hmain(){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(%d\n,z);}6、输入两个正整数m和n,求其最大公约数和最小公倍数。/*枚举法*/#includestdio.hmain(){longm,n,i=1,j,s;scanf(%ld,%ld,&m,&n);for(;i=m&&i=n;i++){if(m%i==0&&n%i==0)s=i;}if(m=n)j=m;elsej=n;for(;!(j%m==0&&j%n==0);j++);printf(s=%ld,j=%ld\n,s,j);}#includestdio.hmain(){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(%d\n,k);p=a*b/k;printf(%d\n,p);}/*辗转相除*/#includestdio.hmain(){intm,n,k,j,p,r=1;scanf(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;do{r=k%j;k=j;j=r;}while(r!=0);printf(%d,%d,k,m*n/k);}/*反复减法*/#includestdio.hmain(){intm,n,k,j,p,r=1;scanf(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;do{p=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=0;while((c=getchar())!=’\n’){if(c=’A’&&c=’Z’||c=’a’&&c=’z’)i++;//英文字母统计elseif(c=’0’&&c=’9’)j++;//数字统计elseif(c==’’)k++;//空格统计elsel++;}printf(i=%d,j=%d,k=%d,l=%d\n,i,j,k,l);}8、求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。#includestdio.hmain(){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、打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+33。【程序1】#includestdio.hmain(){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】#includestdio.hmain(){inti,a,n,s;for(i=100;i=999;i++){n=i;s=0;while(n0){a=__n%10__;s+=a*a*a;n/=__10__;}if(__s==i__)printf(“%d”,i);}10、一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子:6itsfactorsare1、2、3#includestdio.hmain(){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()。#__includestdio.h__#includemath.hmain(){inti=1,flag=1;doublesum=0.0,s;do{s=__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项之和。#includestdio.h#defineN20main(){inti=1;doublex=1,y=2,sum=0;while(__i=20__){sum=sum+__y/x__;y=___x+y__;x=__y-x__;i++;}printf(%f\n,sum);}12、一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?#includestdio.hmain(){inti,n=10;doubleh=100,s=100;for(i=2;i=n;i++){h*=__0.5__;s=__s+h*2__;}printf(s=%f,h=%f\n,s,h);}13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#includestdio.h#defineN10main(){inti=1,sum=1;while(i++N)sum=__(sum+1)*2__;printf(sum=%d\n,sum);}14、用迭代法求。求平方根的迭代公式为:要求前后两次求出的得差的绝对值少于0.00001。#includestdio.h#includemath.hmain(){floatx0,x1,a;scanf(%f,&a);x1=a/2;do{x0=x1;x1=__(x0+a/x0)/2__;}while(__x11e-5__);printf(%g\n,x1);}15、用牛顿迭代法求方程0634223xxx在1.5附近的根。#includestdio.h#include__math.h__#definef(x)2*x*x*x-4*x*x+3*x-6main(){doublex,y;x=__1.5__;do{y=f(x);x=x-y/(6*x*x-8*x+3);}while(fabs(y)1e-6);printf(x=%.3f\n,x);}16、用二分法求方程0634223xxx在(-10,10)之间的根#includestdio.h#includemath.h#definef(x)2x*x*x-4*x*x+3*x-6main(){doublex1=-10,x2=10,x,y;do{x=(x1+x2)/2;y=f(x);if(y0)x1=x;elsex2=x;}while(fabs(y)1e-6);printf(x=%g\n,x);}17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如输入75,输出C。请完成填空#includestdio.hmain(){intscore;scanf(__%d__,&score
本文标题:C语言程序设计(第三版)习题库答案
链接地址:https://www.777doc.com/doc-5049829 .html