(ACM) u Calculate e

来源:互联网 发布:matlab 雅可比矩阵 编辑:程序博客网 时间:2024/06/12 18:44

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类型后得出正确答案。

原创粉丝点击