用c语言编程序求e约等于1+1/1!+1/2!+1/3!+……1/n!当1/n!小于等于10的-5次方的时候停止,用while的语句。

#include<stdio.h>

long fac(int n)
{
long f;
if (n==0||n==1) f=1;
else f=n*fac(n-1);
return f;
}

void main()
{
int n;
double e,s;
n=1;
s=1.0;
e=0.00005;
for (n=1;1/fac(n)>0.0005;n++)
{
s=s+1/fac(n);
n++;
}
printf("%lf\n",s);
}
我这个编程到底哪里错了?
输出s就等于2.00000而已
怎么办?求大神教教

#include <stdio.h>
int main()
{
    int n=1;
    unsigned long fac;
    double e=1.0;
    fac=n;
    while(fac>1e-5)
    {
        e=e+1.0/fac;
        ++n;
        fac=fac*n;
    }
    printf("%f\n",e);
}

计算 1/n!不要都 用整数,1/fac(n) 如果结果小于1将向下取整为0,用1.0/fac(n)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-16
到底用while还是用for追问

题目说是用while,但是它就是循环不起,我用for熟悉一点就先用for循环下看看,但是循环不起啊……

相似回答