一、题目
题目描述
求1+2!+3!+4!+…+30!。
科学计数法,保留两位小数。
输入
无
输出
无
样例输入
无
样例输出
无
二、分析
求1到30的阶乘,外层循环从1到30,内层循环从1乘到外层循环当前的循环层数。
问题1:没有在每次外层循环迭代前把num变为1
问题2:我写完才发现要以科学计数法的方式输出,保留两位小数
三、代码
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
long double num = 1;
long double sum = 0;
for(int i = 1; i <= 30; i++)
{
num = 1;//每次外层循环迭代前将num变为1
for(int j = 1; j <= i; j++)
{
num *= j;
}
sum += num;
}
cout << fixed << setprecision(2);
cout <<"1到30的阶乘和为:"<<sum;
return 0;
}
这个代码是不行的, 因为输出不要文字,而且是要科学计数法,
改成这样子就可以了,感兴趣的小伙伴自己改一下
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double sum = 0, num = 1;
int i = 1;
for(i = 1; i <= 30; i++)
{
num *= i;
sum += num;
}
cout << setprecision(3) <<sum;
return 0;
}
四、反思