怎样用c++求e=1+1/1!+1/2!+1/3!+...求e的近似值,精度要求为0.00001。

如题所述

第1个回答  2011-08-01
int main()
{
double result = 0.0, item = 1.0;//分别存放结果和中间项
int n = 1, s = 1; //s存放阶乘

while(item > 0.00001)//当中间项值大于精度要求时,循环继续
{
result += item;
s *= n;
item = 1.0/s;
n++;

}//end while

cout<<result<<endl;//输出结果

return 0;
}本回答被提问者采纳
第2个回答  2011-08-01
float eCompute()
{
float e = 1;
float a = 1;
int nCout = 1;
while(a > 0.00001)
{
float c=1;
for (int i=1; i<=nCout; i++)
{
c = c*(float)i;
}
a = 1/c;
e = e + a;
nCout ++;
}
return e;
}
把这个函数加到你的代码里面,调用这个函数就能得到e;
第3个回答  2011-08-01
#include <iostream.h>
#include <iomanip.h>
void main()
{
int n=1;
double temp=1.0,e=1.0;
do
{
temp=temp/n;
e+=temp;
n=n+1;
}
while (temp>=1e-5);
cout<<setprecision(5)<<e<<endl; //2.71828
}
第4个回答  2011-08-01
// 0 0 : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
//----------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
double a=0,c=1;
double d=1;
for(double b=1;fabs(c)>1e-5;++b){
d*=b;
c=1/d;
a+=c;
}
cout<<a<<endl;
return 0;
}
第5个回答  2011-08-01
double sum=0;
int i,n,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s*i;
sum+=1.0/s;
}
printf("%lf",sum);
相似回答