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

#include<stdio.h>longfac(intn){longf;if(n==0||n==1)f=1;elsef=n*fac(n-1);returnf;}void... #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而已
怎么办?求大神教教
展开
 我来答
albumin
2014-11-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2421万
展开全部
#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)

帐号已注销
2014-11-16 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:89.8万
展开全部
到底用while还是用for
追问
题目说是用while,但是它就是循环不起,我用for熟悉一点就先用for循环下看看,但是循环不起啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式