自然常数 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类型使它们的取值范围一致。
本文链接:https://shengto.top/c/pat_19.html
转载时须注明出处及本声明