用C语言求e的近似值,用1/1!+1/2!+1/3!+.......1/n!,请问我的哪里错了?

#include<stdio.h>main(){inta=1,b,n=1,nAn;doublee=1;while(nAn<=1e6){b=1;nAn=1;while(b<... #include <stdio.h>
main()
{ int a=1,b,n=1,nAn;
double e=1;
while(nAn<=1e6)
{ b=1;
nAn=1;
while(b<=n)
{ nAn=nAn*b;
b++;
}
e=e+1/nAn;
n++;
}
printf("e=%lf\n",e);
return 0;
}
展开
 我来答
甫峰kQ
2012-12-13 · TA获得超过5098个赞
知道小有建树答主
回答量:763
采纳率:0%
帮助的人:219万
展开全部
还有 e = 1.0/nAn。这个老师不会没教把,整数除以整数还是整数

nAn要大于1e6,因为nAn一开始就小于1e6的

#include <stdio.h>
long long fact(int n) //求阶乘
{
int i;
long long s = 1;
for(i=1;i<=n;i++)
s = s*i;
return s;
}
int main(void)
{
int n=1;
double s=1, s1=0;
while(fabs(s-s1)>=0.00001) //迭代
{
s1 = s;
s = s + 1.0/fact(n);
n++;
}
printf("%lf\n", s);
return 0;
}

不懂就问
追问
请问,nAn要大于1e6,有什么用啊?
追答
我开始没有看你的题目意思。。那个nAn一开始大于1e6或者小于都没有用。再说是1e-6,,10的-6次方。。。。1e6是10的6次方。精确算法要用迭代法像我那样
NE_Z
2012-12-13 · TA获得超过1737个赞
知道小有建树答主
回答量:1687
采纳率:55%
帮助的人:585万
展开全部
int a=1,b,n=1,nAn;
double e=1;
while(nAn<=1e6) //这里nAn的值是多少,没有赋值就使用的变量
追问
你好,这里我确实错了,但是VC6.0执行时并没有出错啊,求解释一下
追答
依赖编译器和编译环境,有的编译器将未赋值的变量整型初始为0,字符串为空,
有的编译器将它弄成个不确定的值,整型表现为数值不确定,每次都不一样结果,字符串访问时表现为该内存不能为read
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
373138057
2012-12-16
知道答主
回答量:12
采纳率:0%
帮助的人:4.5万
展开全部
45432424
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式