编写程序求e的值(误差要求小于10-5)e=1+1/1!+1/2!+1/3!+…+1/n!。

lcj7663152 2008-05-28 10:25:53
试题六. 按下列近似公式"编写程序"求e的值(误差要求小于10-5)
e=1+1/1!+1/2!+1/3!+…+1/n!

参考:
#include <stdio.h>
const double eps=1e-13;
int main(int argc, char* argv[])
{
double e=0,t,t1;
t=t1=1;
while (t-(1e-4)>eps)
{
e+=t;
t*=1/++t1;
}
printf("%lf",e);
return 0;
}
...全文
3835 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjk2752 2008-05-31
  • 打赏
  • 举报
回复
我没改是为了支持作者的原创嘛.找他迷惑的地方,呵轲
zjk2752 2008-05-29
  • 打赏
  • 举报
回复

#include <stdio.h>
const double eps=1e-13;
int main(int argc, char* argv[])
{
double e=0,t,t1;
t=1;
t1=0;////////////////////改在这个地方
while (t-(1e-4)>eps)
{
e+=t;
t*=1/++t1;
}
printf("%lf",e);
return 0;
}

正确的结果是e=2.71828;
t1=1的话就是从1的阶乖开始的,而第一个1相当是0的阶乖,你就是把它给渥了

Paradin 2008-05-29
  • 打赏
  • 举报
回复
顶楼上

taoanran 2008-05-29
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int x,zhi,j=1;
float sum=0.0,t=1.0,s=1.0;
scanf("%d",&x);
for(int i=0;i<x;i++)
{
sum=sum+t;
s=s*j;
t=1/s;
j++;
printf("s=%d\n",int(s));
}
printf("%f\n",sum);
}
K行天下 2008-05-29
  • 打赏
  • 举报
回复
楼上的是不是要吧1e-4改为1e-5
leeldy 2008-05-28
  • 打赏
  • 举报
回复
/*
试题六. 按下列近似公式"编写程序"求e的值(误差要求小于10-5)
e=1+1/1!+1/2!+1/3!+…+1/n!
*/

#include"stdio.h"

int main()
{
double i=1.0;
double s=1.0;
double e=1.0;
while(s>1e-5)
{
s*=1/i;
i++;
e+=s;

}
printf("e=%lf s=%lf\n",e,s);
printf("e=2.718281828...\n");
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧