解题思路:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复