C语言答案解析 下载本文

#include double fun(int n) {

double s=1.0, t=1.0; int k;

double rtn=1.0; for(k=1;k<=n; k++) {

t = t*k;

s = s*(2*k+1); rtn=rtn+t/s;____ }

return rtn; }

void main() {

double sum; _sum=fun(25);_ printf(\}

23、已知:Sn=2/1+3/2+4/3+…+(n+1)/n, 求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。答案:49.395 #include double fun() {

double t=0,s=0; double n; for(n=1;;n++) {

t=t+(n+1)/n; if(t>50) break; s=t; }

return s; }

void main() {

printf(\}

24、计算Y=X/1!-X^3/3!+X^5/5!-X^7/7!+……前20项的值(已知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。答案: 0.91

#include main( ) { int i; double a,b,x,y; x=2; y=x; a=x; b=1; for(i=1;i<=20;i++) { a=-a*x*x; b=b*2*i*(2*i+1); y=y+a/b; } printf(\}

25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:3^2+4^2=5^2,则5为弦数,求[131,200]之间最小的弦数。答案:135 #include int xs(int x) { int i,j;

for(i=1;i

void main( ) { int i,j,x,flag=0; x=131;

for(x=131;x<=200;x++) if(xs(x)) { printf(\ break; } }

26、已知X,Y,Z为三个正整数,且X^2+Y^2+Z^2=25^2,求X+Y+Z的最大值。答案:43

#include void main() { int x,y,z,max,sum; max=0; for(x=1;x<=25;x++) for(y=1;y<=25;y++) for(z=1;z<=25;z++) { if(x*x+y*y+z*z==25*25) sum=x+y+z; if(sum>max) max=sum; } printf(\}

27、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。答案:1534 #include void main() { float x,i,t; for(x=1;;x++) { t=x; for(i=1;i<10;i++) t=t-(t/2+1); if(t==1) break; } printf(\}

28、求[1,50]之间的所有整数能构成直角三角形的三边的组数。例如:3*3+4*4=5*5,它们构成直角三角形,所以{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相同的一组。答案:20

#include void main() { int i,j,k,num=0; for(i=1;i<=50;i++) for(j=i;j<=50;j++) for(k=j;k<=50;k++)

if(i*i+j*j==k*k) num++; printf(\}

29、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。 答案: 18种 #include void main() { int i,j,k,num=0,t=0; for(i=0;i<=15;i++) for(j=0;j<=15;j++) for(k=0;k<=15;k++) { if(i*1+j*2+k*5==15) num++; t++; } printf(\}

30、用迭代法求x等于a开平方的正数值。

-5

迭代公式为:xn+1=1/2*(xn+a/xn),要求直到前后两次求出的x的差的绝对值小于10为止。A的值从键盘输入。 #include #include main( )

{ float x0,x,a;

scanf(\ x=1; do{ x0=x; x=1.0/2*(x0+a/x0); } while(fabs(x-x0)>=1e-5); printf(\}

31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。 答案:407 #include int flower(int n) { int x=0,i,j,k; i=(n);

j= (n/10); k=(n/100); x=i*i*i+j*j*j+k*k*k; if(x==n) return 1; else return 0; }

void main() { int i,max=0; for(i=100;i<=999;i++) if(flower(i) && i>max) max=i; printf(\}

32、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高? 答案: 299.609375 0.097656 分析:设x=100,距离之和s的初值s=100 落地次数(i) 经过距离(s) 反弹距离(x) 1 100 50 2 50 25 3 25 25/2 。。。 。。。 s=s+x x=x/2 #include

void main() { float x,s=0; int i; x=100; s=100;

for(i=1;i<=10;i++) { if(i<10) s=s+x; x=x/2; } printf(\}

33、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。