计算球体积 HDU-2002(语言训练题)

根据输入的半径值,计算球的体积。

    Input
    输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。

    Output
    输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

    Sample Input
    1
    1.5

    Sample Output
    4.189
    14.137
    
    Hint
    #define PI 3.1415927

问题分析:
题目计算球的体积,关键是要输出三位小数,最初想到用关键字int和double对小数进行控制,但是int型长度有限,输入半径大点的话数据就会溢出,小数点后的数位会逐渐减少,最后就没有小数了,所以用这种方法并不正确,要找其他办法。
程序说明:
调用setiosflags(ios::fixed)和setprecision(n),setiosflags(ios::fixed)是指固定的浮点显示,当setiosflags(ios::fixed)和setprecision(n)一起用时就输出n位小数,setprecision是指设置输出精度,当没有setiosflags(ios::fixed)时输出格式是数据的有效位数,例如

float a=123.666;
cout<<setprecision(5)<<a;

将输出123.67(他会四舍五入)
如果setprecision里的参数小于整数位数,将以指数形式输出,例如

float a=123.666;
cout<<setprecision(2)<<a;

将输出1.2e+002.

setiosflags(ios::fixed)和setprecision(n)包含在头文件#include中,setiosflags(ios::fixed)和setprecision(n)只需要设置一次就行了,因为这两个的作用范围是后续的对象,而不仅仅是对后一个对象。

程序实现:

#include "pch.h"
#include <iostream>
#include<iomanip>
using namespace std;
#define PI 3.1415927
int main()
{
 double v, r;
 while (cin >> r)
 {
  v = (PI * r*r*r * 4) / 3;
  cout << setiosflags(ios::fixed)<<setprecision(3)<<v << endl;
 }
}

猜你喜欢

转载自blog.csdn.net/qq_43667011/article/details/84869886