自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。

输入格式:

输入第一行中给出非负整数 n(≤1000)。

输出格式:

在一行中输出部分和的值,保留小数点后八位。

输入样例:

10

输出样例:

2.71828180
#include <stdio.h>
int main(int argc, const char *argv[])
{
    int n,i=0,j=0;
    scanf("%d",&n);
    double div = 1;
    //int div = 1;//n稍大时,最后结果为inf
    double sum = 0.0 ;
    //float类型有效数字最多6~7位,double有效数字最多15~16位
    if(n>=0 && n<=1000)
    {
        for(i=0;i<=n;i++)//共有n+1项
        {
            div = 1;//每项分母阶乘都从1开始
            for(j=1;j<=i;j++)
            {
                div *= j;
            }
            sum += 1.0/div;
        }
        printf("%.8lf\n",sum);
    }
    return 0;
}

注意

输出结果为 inf 处理:

inf :表示输出的浮点类型数据溢出

解决方法:

1、改float为double。

2、检查运算过程中数据类型是否一致,若不一致(如int类型和double类型的两个数据运算),将int类型改为double类型使它们的取值范围一致。

Last modification:2021 年 03 月 27 日 15 : 59 : 45