南美洲的故事:C语言问题???
来源:百度文库 编辑:神马品牌网 时间:2024/08/27 22:13:22
编程求e约等于1+1/1!+1/2!+1/3!+...+1/n!
以下编程错在哪里??
main()
{
float e;
int n,s;
e=1;
s=1;
for(n=1;n<=50;n++)
{
s=s*n;
e=e+1/s;
}
printf("the value e=%lf\n",e);
}
以下编程错在哪里??
main()
{
float e;
int n,s;
e=1;
s=1;
for(n=1;n<=50;n++)
{
s=s*n;
e=e+1/s;
}
printf("the value e=%lf\n",e);
}
main()
{
float e,n,s;
e=1;
s=1;
for(n=1;n<=50;n++) /*如果s是int,那么s肯定要溢出*/
{
s=s*n;
e=e+1/s;
}
printf("the value e=%f\n",e); /*%f就可以了,不需要%lf*/
}
e=e+1/s 有问题,你将s和n定义为int型,那样它们之间的运算也是int型,常量1也是int型,所以1/s的结果为0,上面的程序输出的结果就是e*n的结果了。
应该将s定义为flaot型,或者直接将e=e+1/s改为e=e+1.0/s 这样就可以了
s应为双精度的,否则装不下大的书,如30!,前面应为
1.0/s。
我也认为应定义s 和 e为实型,最好为doubl型