1、C 语言程序设计(第三版)习题库1、设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include main()float r,h,C1,Sa,Sb,Va,Vb; scanf(_”%f”_, scanf(”%d”,_; 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 小数。 #include main()float F,c; scanf(“%f“, _c=5*(F-32)/9_; printf(“c=%.2f“,c); 3、有一函数: 写一程序,输入 x 值,输出 y 值。 1032xy#include main()int x,y; printf(“输入 x:“); scanf(“%d“, if(x=1 int i=0; scanf(“%ld“, while(num0)i+; /*统计长度*/m=m*10+num%10;num =num/10;prin
3、tf(“数字长度为: %d“,i); printf(“逆序数字为: %dn“,m); 5、以下程序实现的功能:求三个数的最大值#includemain()int a,b,c,max;scanf(“%d %d %d“,if(ab)if(ac) max=a;else max=c; elseif(bc) max=b;else max=c;printf(“max= %d“,max);#include main()int x,y,z,t=0;scanf(“%d %d %d“,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
4、“,z);6、输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 /*枚举法*/#includemain() long m,n,i=1,j,s; scanf(“%ld,%ld“, for(;i=n)j=m; else j=n; for(;!(j%m=0j+); printf(“s=%ld,j=%ldn“,s,j); #include main()int a,b,k,temp,i,p;scanf(“%d,%d“,if(ab)temp=b;elsetemp=a;for(i=2;imain()int m,n,k,j,p,r=1;scanf(“%d,%d“,k= mn?m:n;j= mn? n:
5、m;dor=k%j;k=j;j=r;while(r!=0);printf(“%d,%d“,k,m*n/k);/*反复减法*/#includemain()int m,n,k,j,p,r=1;scanf(“%d,%d“,k= mn? m:n;j= mn?n:m;dop=k-j;if(jp) k=j; j=p;else k=p;while(p!=0);printf(“%d,%d“,k,m*n/k);7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include“stdio.h“ main() char c;int i=0,j=0,k=0,l=0; while(c=getch
6、ar()!=n) if(c=A long b=0,sum=0;scanf(“%d %d”,for (i=1;imain()int i,m,n,k;for(i=100;imain()int i,a,n,s;for (i=100;i0) 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 之内的所有完数,并按下面格式输出其因子: 6 its factors are 1、2、3 #includ
7、e main() int a,i,m;for (a =1; a_#includemain() int i=1,flag=1;double sum=0.0,s;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#define N 20main()int i=1;double x=1,y=2, sum=0; while(_imain() int i,n=10;doub
8、le h=100,s=100; for(i=2;i#define N 10main() int i=1,sum=1; while(i+#include main() float x0,x1,a; scanf(“%f“, x1=a/2; do x0=x1;x1=_(x0+a/x0)/2_; while(_x11e-5_); printf(“%gn“,x1); 15、用牛顿迭代法求方程 在 1.5 附近的根。 0634223xx#include #include _#define f(x) 2*x*x*x-4*x*x+3*x-6 main() double x,y;x=_1.5_; doy = f
9、(x); x = x - y/(6*x*x-8*x+3); while(fabs(y)1e-6); printf(“x=%.3fn“,x); 16、用二分法求方程 在(-10,10) 之间的根 0634223xx#include #include #define f(x) 2x*x*x-4*x*x+3*x-6main() double x1=-10,x2=10,x,y;dox=(x1+x2)/2;y=f(x);if(y1e-6);printf(“x=%gn“,x); 17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如 输入75,输出 C。请完成填空#includemain
10、()int score;scanf(“_%d_“,switch(_score/10_)case 1:case 2:case 3:case 4:case 5: printf(“grade En”); _break_;case 6: printf(“grade Dn”);break;case 7: printf(“grade Cn”);break;case 8: printf(“grade Bn”);break;case 9: printf(“grade An”);break;_default_:printf(“Error input!n“);18、该程序功能:对 x=1,2,.,10,求 f(x
11、)=x*x-5*x+sin(x)的最大值。#include #include #define f(x) x*x-5*x+sin(x)void main() int x; float max;_max=f(1)_;for(x=2;xmain()int a,b,s;scanf(“%d%d“,s=_a*a+b*b_;if(s100) printf(“%d“,_s/100_);else printf(“%d“,_a+b_);20、有 1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程序统计卖完所需的天数。#include main()int day,x1,x2;day=0;x1=1020;while(_x10_)x2=_x1/2-2_; x1=x2; day+printf(“day=%d”,day);21、找出整数的所有因子#include main()int i,x;scanf(“%d”,i=1;for ( ; _imain()int n=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!=iprintf(“n=%dn”,n);23、用 100 元换成 1、2、5 元的所有兑换方案。