求解这段c语言代码的问题

#include<stdio.h>
#include<math.h>
main()
{
float a,b,c,d,sum=1;
printf("");
scanf("%f",&a);
b=1,c=1,d=0;
while (d<a)
{
d++;
b=b*d;
c=c*(c+2);
sum=sum+b/c;
}
printf("%f",sum);
}
本身没有错误,但输出的结果始终小于1.490562

你得先说是干嘛用的。。。
sum自加一个b/c。
粗略一看b/c会因循环次数增加会更小。
循环
1:
b=1*1=1
c=1*(1+2)=3
2:
b=1*2=2
c=3*(3+2)=15
3:
b=2*3=6
c=15*(15+2)=255
4:
b=6*4=24
c=255*(255+2)=65535
5:
b=24*5=120
c=65535*(65535+2)=4294967295
.....
你可以把每次循环c增长的数量级和b增长的数量级比较一下
温馨提示:答案为网友推荐,仅供参考