題目連接:http://acm.hdu.edu.cn/showproblem.php?pid=2023php
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int main() 6 { 7 double m,n; 8 while(cin >> n >> m)//n個學生,m個科目 9 { 10 double fenshu[51][6] = {0},fen[51] = {0};//fenshu二維數組記錄每一個學生的各科分數,fen一維數組記錄某一學生的總分 11 for(int i = 0;i < n;i++) 12 { 13 for(int j = 0;j < m;j++) 14 { 15 cin >> fenshu[i][j];//循環讀入n*m個成績數據 16 fen[i] += fenshu[i][j];//對每一個學生的成績進行累加,而且記錄在一維數組fen中 17 } 18 } 19 //輸出第一行 20 for(int i = 0;i < n;i++) //注意控制輸出格式,求出每一個學生的平均成績 21 { 22 if(i == n - 1) 23 printf("%.2lf",fen[i] / m); 24 else 25 printf("%.2lf ",fen[i] / m); 26 } 27 cout << endl; 28 //輸出第二行 29 double ave1[6] = {0},ave2[6] = {0};//ave1數組記錄各科的總分,ave2數組記錄各科的平均分,注意輸出時的格式 30 for(int j = 0;j < m;j++)//外層循環爲j 至關於對某一列求總和 31 { 32 for(int i = 0;i < n;i++)//內層循環爲i//首先對各科的分數累加 33 ave1[j] += fenshu[i][j]; 34 ave2[j] = ave1[j] / n;//取平均 35 if(j == m - 1) 36 printf("%.2lf",ave2[j]); 37 else 38 printf("%.2lf ",ave2[j]); 39 } 40 cout << endl; 41 //計算有幾個學生的各科成績都大於平均成績的 42 int temp,count = 0; 43 for(int i = 0;i < n;i++)//依次遍歷 44 { 45 temp = 0; 46 for(int j = 0;j < m;j++) 47 if(fenshu[i][j] >= ave2[j])//依題意,若是學生的某一學科的成績會大於等於這個學科的平均成績,那麼臨時變量temp加一 48 temp++; 49 if(temp == m)//說明若是學生的m個學科的成績都大於各個學科的平均成績,則符合條件,計數器加一 50 count++; 51 } 52 cout << count << endl << endl;//注意輸出格式 53 } 54 return 0; 55 }
這其實是一道水題,在咱們學校上的測試平臺上是 萌新題,我作了2-3個小時,我哭了/(ㄒoㄒ)/~~ios
思路是這樣的,可將輸入學生的成績當作一個矩陣,最後只需對矩陣的行和列進行處理與判斷就行了,太水了我/(ㄒoㄒ)/~~數組