2 tomxukexuan Tomxukexuan 于 2014.07.30 15:07 提问

有关用C语言阶乘的问题

昨天见到一道题:1+1/1!+1/2!+......+n
N是不小于10的-6次方的数

#include <stdio.h>

int main()
{
double a=1,b=0,c=1,e=0;
while (b>=1e-6)
{
    c=c*a;
    a=a+1;
    b=1/c;
    e=e+b;
} 
printf("%f\n",e);
return 0;

}
但结果却是:0.000000
到底是哪里错了??
希望得到大家指点!

5个回答

Tomxukexuan
Tomxukexuan   2014.07.30 21:03
已采纳

#include

int main()
{
double a=1,,c=1,e=0;
while ((1/c)>=1e-6)
{
c=c*a;
a=a+1;
e=e+1/c;
}
printf("%f\n",e);
return 0;
}
B完全不需要,“(1/c>=1e-6)”“1/c”外要加“()”

swj6086085
swj6086085   2014.07.30 16:32

while(b>1e-6)从一开始就不成立,b=0,1e-6>0,根本不会进入循环,把b初始化为1就对了

Tomxukexuan
Tomxukexuan   2014.07.30 21:09

#include

int main()
{
double a=1,,c=1,e=0;
while ((1/c)>=1e-6)
{
c=c*a;
a=a+1;
e=e+1/c;
}
printf("%f\n",e);
return 0;
}
B完全不需要,“(1/c>=1e-6)”“1/c”外要加“()”

Tomxukexuan
Tomxukexuan   2014.07.30 21:09

#include

int main()
{
double a=1,,c=1,e=0;
while ((1/c)>=1e-6)
{
c=c*a;
a=a+1;
e=e+1/c;
}
printf("%f\n",e);
return 0;
}
B完全不需要,“(1/c>=1e-6)”“1/c”外要加“()”

Tomxukexuan
Tomxukexuan 谢谢!!
3 年多之前 回复
u013263923
u013263923   2014.07.31 09:03

b>=1e-6刚开始就不成立 进入不到循环。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!