【问题描述】
已知的近似值可由下面公式计算得出:
=1 + x/1! +
/2! +
/3! + ...... +
/n!
给定x和n,利用上述公式求得的近似值。
【输入形式】
从控制台输入小数x,和整数n(n>=1),用空格隔开。
【输出形式】
向控制台输出求得的 的近似值(小数点后保留6位有效数据)。
【样例输入】
7 27
【样例输出】
1096.633156
【样例说明】
输入的x为7,n的值为27,即:求e7的近似值,利用上述公式求得的近似值为:1096.633156。
【源代码】
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
double factorial(int n)//定义一个求阶乘的函数
{
double fac = 1;//此处用double不用int,int容量过小
for (int i = 1; i <= n; i++)
{
fac = fac * i;
}
return fac;
}
int main()
{
double x, e = 1;
int n;//n需为整型变量,否则后面会计算误差
cin >> x >> n;
for (int i = 1; i <= n; i++)
{
e = e + pow(x, i) / factorial(i);//使用乘方pow函数,须包含头文件cmath
}
cout << fixed << setprecision(6) << e << endl;//setprecision保留小数,须头文件iomanip
return 0;
}
其中使用了自己定义的求阶乘的函数factorial
double factorial(int n)
{
double fac = 1;
for (int i = 1; i <= n; i++)
{
fac = fac * i;
}
return fac;
}