这一道题一开始看题目觉得挺简单的,所以就直接写代码了。一开始也注意到了要格式化输出。但是在写出代码以后总是发现WA。最后发现还是格式化输出的问题。
这是一开始出现错误的代码
#include <iostream>
#include <iomanip>
using namespace std;
int jie(int n)
{
int sum = 1;
for (int i = 1; i <= n;i++)
sum *= i;
return sum;
}
int main()
{
double temp=2.5;
double e;
cout << "n e" << endl;
cout << "- -----------" << endl;
cout << "0 1" << endl;
cout << "1 2" << endl;
cout << "2 2.5" << endl;
for (int i = 3; i <=9;i++)
{
e = 1.0 / jie(i);
temp += e;
cout << i << " "<< setprecision(9) << temp<< endl;
}
return 0;
}
找了很长时间最后发现还是要进行固定化输出。使用fixed.
最后代码为
#include <iostream>
#include <iomanip>
using namespace std;
int jie(int n)
{
int sum = 1;
for (int i = 1; i <= n;i++)
sum *= i;
return sum;
}
int main()
{
double temp=2.5;
double e;
cout << "n e" << endl;
cout << "- -----------" << endl;
cout << "0 1" << endl;
cout << "1 2" << endl;
cout << "2 2.5" << endl;
for (int i = 3; i <=9;i++)
{
e = 1.0 / jie(i);
temp += e;
cout << i << " "<<fixed << setprecision(9) << temp<< endl;
}
return 0;
}
上面使用了C++的格式化输出。
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。 如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。