c++格式化输出(百分数,小数,设置宽度)

转载:https://blog.csdn.net/qq_45974279/article/details/104241375

以下几种控制格式符的头文件为:

#include <iomanip>

    1.输出保留小数点后几位

    cout<<setiosflags(ios::fixed)<<setprecision(n);
    //保留几位n就是几
    • 1

    2.保留n位有效数字

    cout << setprecision(n);
    //保留几位n就是几
    • 1

    3.设置输出宽度为n

    cout<<setw(n);
    //宽度为n
    • 1

    举个例子

    输出浮点数7.5612,设置输出宽度为10,输出精度为4(小数点后保留3位有效数字或者保留4位有效数字)并换行

    cout<<setw(10)<<setprecision(4)<<7.5612<<endl;

      再举个题目为例

      【题目描述】
      某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。
      【输入】
      共2行,第一行为过往病人的数目n(0<n≤100),第二行为每个病人患病时的年龄。
      【输出】
      按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。
      【输入样例】
      10
      1 11 21 31 41 51 61 71 81 91
      【输出样例】
      20.00%
      20.00%
      20.00%
      40.00%

      代码如下

      #include<iostream>
      #include<iomanip>
      using namespace std;
      int main()
      {
      int i,n,a[100];
      double b[4]={0,0,0,0};
      cin>>n;
      for(i=0;i<n;i++)
      cin>>a[i];
      for(i=0;i<n;i++)
      {
      if(a[i]>=0&&a[i]<=18)b[0]++;
      if(a[i]>=19&&a[i]<=35)b[1]++;
      if(a[i]>=36&&a[i]<=60)b[2]++;
      if(a[i]>=61)b[3]++;
      }
      cout<<setiosflags(ios::fixed)<<setprecision(2);
      for(i=0;i<4;i++)
      {
      b[i]=b[i]*100.0/n;
      cout<<b[i]<<"%"<<endl;
      }
      return 0;
      }
      posted @   蔡姬小媛  阅读(217)  评论(0编辑  收藏  举报
      点击右上角即可分享
      微信分享提示

      目录导航