[PTA]练习4-7 求e的近似值

[PTA]练习4-7 求e的近似值

题目:

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

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

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

输入样例:10

输出样例:2.71828180

方式一:一般形式,两层循环嵌套

#include<stdio.h>
int main()
{
	int n = 0;
	double sum = 1;
	scanf("%d", &n);
	if (n <= 1000)
	{
		for (int i = 1; i <= n; i++)
		{
			double fact = 1;//不能定义为全局变量
			for (int j = 1; j <= i; j++)
			{
				fact = fact * j;
			}
			sum = sum + 1.0 / fact;
		}
		printf("%.8f\n", sum);
	}
	return 0;
}

方式二:自定义调用求阶乘函数

#include<stdio.h>
double fact(int x)//求x的阶乘函数,注必须定义为double类型,int类型装不下最大值1000?
{
	double fact=1;
	for (int j = 1; j <= x; j++)
	{
		fact = fact * j;
	}
	return fact;
}
int main()
{
	int n = 0;
	scanf_s("%d", &n);
	double sum = 1;
	if (n <= 1000)
	{
		for (int i = 1; i <= n; i++)
		{
			sum = sum + 1.0 / fact(i);
		}
		printf("%.8f\n", sum);
	}
	return 0;
}