C语言编写,求e的值.e≈1+1/1!+1/2!+1/3!+……+1/n!

1.用for循环,计算前50项.
2.用while循环,要求直至最后一项的值小于10的-4次方.

1.
//---------------------------------------------------------------------------

#include <stdio.h>

#define N 50
int main(int argc, char* argv[])
{
double e=1,t=1;
int t1;
for (t1=2;t1<=N;++t1)
{
t*=(double)1/t1;
e+=t;
}
printf("%lf",e);
return 0;
}
//---------------------------------------------------------------------------

2.
//---------------------------------------------------------------------------

#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;
}
//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-29
e=1;
div=1;
for(i=1;i<n;i++)
{
div/=i;
e+=div;
}
第2个回答  2008-01-29
#include "math.h"
#include "stdio.h"
void main()
{
double i=1.0,j=1.0,k=0.0,e=1.0;
if(e-k>=1/1000000)
{
j=i*j;
k=e;
e=e+1/j;
i=i+1;
}
printf("%lf\n",e);
}
第3个回答  2008-01-29
/*2.7183*/
/*2.7182818284590452*/
/*2.718214*/
#include<stdio.h>
main()
{
int i;
double c,e;
int a;
unsigned n;
a=1;
e=1;
c=1;
printf("Input n:");
scanf("%d",&n);//50
for(i=1;i<=n&&c>1e-6;i++)
{
a*=i;
c=1.0/a;
e+=c;
/* if(c<1e-6) */
/* break; */
}
printf("e=%lf\n",e);
}

............
#include <iostream>
using namespace std;

double LadderMultiply(int a);

void main()
{
int e=1;
for(int c=1;c<50;c++)
{
e+=1/LadderMultiply((double)c);
}
cout<<"利用公式e=1+1/1!+1/2!+1/3!+1/4!+…,计算到前50项,e="<<e<<endl;
}

double LadderMultiply(int a)
{
if(a<0)
{
return -1.0;
}
if(a==0)
return 0.0;
if(a>0)
for(int b=a;b>=1;b--)
a*=b;
return a;
}

.............
#include <stdio.h>

const double eps=1e-13;

int main()
{
double e=0,t,t1;
t=t1=1;
while (t-(1e-4)>eps)
{
e+=t;
t*=1/++t1;
}
printf("%lf",e);
return 0;
}
相似回答