【问题描述】
已知的近似值可由下面公式计算得出:
=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保留小数,须头文件iomanipreturn 0;}
其中使用了自己定义的求阶乘的函数factorial
double factorial(int n){double fac = 1;for (int i = 1; i <= n; i++){fac = fac * i;}return fac;}