int i=1,a=1;
double s=0;
do
{
a=a*i;
s=s+1/a;
i++;
}while(a<100000);
printf("%lf\n",s);
把s=s+1/a;改成s=s+1.0/a;
s = s + 1 / a;
即当a > 1时,(1 / a) 得0,所以结果为1。
解决方案:
将变量a定义为double型。
int i=1;
float a=1;
double s=0;
do
{
a=a*i;
s=s+1/a;
i++;
}while(1/a<0.00001);
printf("%lf\n",s);