原題 : Problem Description 假設一個班有n(n<=50)個學生,每人考m(m<=5)門課,求每個學生的平均成績和每門課的平均成績,並輸出各科成績均大於等於平均成績的學生數量。 Input 輸入數據有多個測試實例,每個測試實例的第一行包括兩個整數n和m,分別表示學生數和課程數。然後是n行數據,每行包括m個整數(即:考試分數)。 Output 對於每個測試實例,輸出3行數據,第一行包含n個數據,表示n個學生的平均成績,結果保留兩位小數;第二行包含m個數據,表示m門課的平均成績,結果保留兩位小數;第三行是一個整數,表示該班級中各科成績均大於等於平均成績的學生數量。 每個測試實例後面跟一個空行。 Sample Input 2 2 5 10 10 20 Sample Output 7.50 15.00 7.50 15.00 1 原碼: [cpp] #include <stdio.h> #include <string.h> int main() { int n, m; int i, j; int t, d; int s[50]; int c[5]; int sc[50][5]; while (scanf("%d%d", &n, &m) != EOF) { memset(s, 0, sizeof(s)); memset(c, 0, sizeof(c)); memset(sc, 0, sizeof(sc)); for (i = 0 ; i < n ; i++) { for (j = 0 ; j < m ; j++) { scanf("%d", &sc[i][j]); c[j] += sc[i][j]; s[i] += sc[i][j]; } } for (i = 0 ; i < n ; i++) printf("%.2lf%c", s[i] * 1.0 / m, i < n - 1 ? ' ' : ' \n'); for (i = 0 ; i < m ; i++) printf("%.2lf%c", c[i] * 1.0 / n, i < m - 1 ? ' ' : ' \n'); for (t = i = 0 ; i < n ; i++) { for (d = 1, j = 0 ; j < m ; j++) { if (sc[i][j] < 1.0 * c[j] / n) { d = 0; break; } } if (d) t++; } printf("%d\n\n", t); } return 0; }