##Problem Description ##
A simple mathematical formula for e is
where n is allowed to go to infinity. This can actually yield very accurate approximations of e using relatively small values of n.
Output
Output the approximations of e generated by the above formula for the values of n from 0 to 9. The beginning of your output should appear similar to that shown below.
Sample Output##
n e
0 1
1 2
2 2.5
3 2.666666667
4 2.708333333
Source
Greater New York 2000
题意
题目要求根据公式求出在0·9时,e的值。
#include <stdio.h>
int Fact(int i);
double Sum(int n);
int main()
{
int n;
double e,s;
printf("n e\n");
printf("- -----------\n");
for(n=0;n<=9;n++)
{
if(n==0||n==1)
{
e=Sum(n);
printf("%d %.0lf\n",n,e);
}
else if(n==2)
{
e=Sum(n);
printf("%d %.1f\n",n,e);
}
else
{
e=Sum(n);
printf("%d %.9lf\n",n,e);
}
}
return 0;
}
int Fact(int i)
{
int k;
double m=1;
if(i==0||i==1)
{
m=1;
}
else
{
for(k=1;k<=i;k++)
{
m=m*k;
}
}
return m;
}
double Sum(int n)
{
int i;
double e=0,s;
for(i=0;i<=n;i++)
{
s=1.0/(Fact(i));
e=s+e;
}
return e;
}
心得
在做这道题的过程中,使用了函数调用,前几次编写代码,在运行过程中0到1所求的e的值都是正确的,从2开始e的值就出错了(e=2.00000000000),经过多次检查代码后,在声明函数Sum(int n)
类型时,没有考虑到所得结果为浮点小数,而定义了函数类型为int,最后将int改为double类型后得出正确答案。