2017年10月21日 星期六

[C_AR021-易] 成績統計(C++)

[C_AR021-易] 成績統計

問題描述:
每次考完試,通常都是老師、助教惡夢的開始,除了要改考卷以外,統計成績也是一件麻煩的事,現在請寫一個程式可以用來處理統計成績的問題,須統計的科目包含:國文、英文、數學,裡面要可以計算全班同學的平均分數,以及各科平均分數的函式。假設有 x 個人考國文、英文、數學,則全體平均為全部成績相加除以 3*x ,國文成績為所有國文成績相加除以 x ,英文成績為所有英文成績相加除以 x ,數學成績為所有數學成績相加除以 x 。
輸入說明:
第一列輸入一個正整數 n 。其後有 n 列,每一列代表學生國文、英文,數學成績。
輸出說明:
只有一列表全體平均、國文平均、英文平均、數學平均,分數皆採四捨五入算至小數點後1位。
範例:
Sample InputSample Output
2
10 20 30
60 70 80
45.0 35.0 45.0 55.0


  1. #include <iostream>    
  2. #include<iomanip>    
  3. #include<cmath>    
  4. using namespace std;    
  5.     
  6. int main() {    
  7.     // [C_AR021-易] 成績統計    
  8.     int n;    
  9.     cin >> n;    
  10.     double grade[n][3];    
  11.     double chinese=0,english=0, math=0, totle=0;    
  12.     for(int i = 0;i < n;i++)    
  13.     {    
  14.         for(int j = 0;j < 3;j++)    
  15.         {    
  16.             cin >> grade[i][j];    
  17.         }    
  18.     }    
  19.         
  20.     for(int i = 0;i < n;i++)    
  21.     {    
  22.         chinese = chinese + grade[i][0];    
  23.         if(i == n-1)    
  24.         {    
  25.             chinese = chinese/n;    
  26.         }    
  27.     }    
  28.     for(int i = 0;i < n;i++)    
  29.     {    
  30.         english = english + grade[i][1];    
  31.         if(i == n-1)    
  32.         {    
  33.             english = english/n;    
  34.         }    
  35.     }    
  36.     for(int i = 0;i < n;i++)    
  37.     {    
  38.         math = math + grade[i][2];    
  39.         if(i == n-1)    
  40.         {    
  41.             math = math/n;    
  42.         }    
  43.     }    
  44.     for(int i = 0;i < n;i++)    
  45.     {    
  46.         for(int j = 0;j < 3;j++)    
  47.         {    
  48.             totle = totle + grade[i][j];    
  49.             if(i == n-1 && j == 2)    
  50.             {    
  51.                 totle = totle/(3*n);    
  52.             }    
  53.         }    
  54.     }    
  55.     totle = (floor(totle*10+0.5))/10;    
  56.     chinese = (floor(chinese*10+0.5))/10;    
  57.     english = (floor(english*10+0.5))/10;    
  58.     math = (floor(math*10+0.5))/10;    
  59.     cout << fixed << setprecision(1) << totle << " " << chinese << " " << english << " " << math << endl;    
  60.     return 0;    
  61. }  

3 則留言: