解题思路:

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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论