同本期第四题一样,极其简单。套用球的面积公式即可。
注意本题的Hint:规定π \piπ的值为3.1415927。此外本题为“多组输入数据”。 不过输出结果要进行“保留三位小数”的处理。
怎么处理?
令结果对0.001取余后四舍五入即可。 取余运算之只能在左右都为整数的时候使用,所以不能这样取余。但后来我还是用比较曲折的方式写出了个貌似可用的“保留三位小数函数”:
double rounding(double x)//保留三位小数函数
{
if (int(10000 * x) % 10 >= 5)
return double(int(1000 * x) + 1) / 1000;
else
return double(int(1000 * x)) / 1000;
}
虽然经过测试这个函数算是可以用的,但用它写成的代码仍总是Wrong Answer。 不得已求助他人才得知C++自带的工具已提供了极为简单的方法处理输出精度问题。 保留三位小数:cout<<fixed<<setprecision(3)<<要输出的double数;即可
fixed的作用是按一般形式输出小数而不是用科学计数法;
在前面有fixed的情况下,setprecision(n)即保留n位小数(没有fixed时,setprecision函数作用为保留n位有效数字。使用这一函数需要头文件iomanaip。)
#include<iostream>
#define PI 3.1415927
#include<iomanip>
using namespace std;
int main()
{
double R;
while (cin >> R)
cout << fixed << setprecision(3) << double(4.0 / 3 * PI * R * R * R) << endl;
return 0;
}