c++格式化輸出(百分數,小數,設定寬度)

蔡姬小媛發表於2024-06-11

轉載: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;
      }

      相關文章