解题思路:
1.自定义阶乘函数,并使用递归,可能会导致运行时间长于其他解法
2.为达到全部C++语言实现,引用了与精度有关的头文件
3.将结果拆分成十进制数,阶码标志e以及阶码三部分输出
注意事项:
1.数据类型定义时,都定义为double类型最佳
2.要知道循环条件及次数
3.结果使用科学计数法,保留两位小数
4.此题输出结果应为这样的格式 “保留两位的十进制数e+阶码”
参考代码:
#include <iostream>
#include <iomanip> //C++中与精度有关的头文件
using namespace std;
double fact(double n) //自定义阶乘函数
{
if(1.0==n)
{
return 1.0;
}else
{
return n*fact(n-1); //递归调用阶乘函数
}
}
int main()
{
int n=0; //n用于存储阶码
double sum=1; //sum用于存储阶乘和
for(double i=2;i<=30;i++)
{
sum=sum+fact(i);
}
while(sum>10) //计算阶码的循环
{
sum=sum/10;
n++; //阶码和每次整除10,阶码加1
}
cout<<fixed<<setprecision(2)<<sum<<"e+"<<n<<endl; //按照题目输出要求,输出结果
return 0;
}
0.0分
1 人评分