Calculate Subject Averages
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
64M
Author:
Problem type
Allowed languages
Java 19, Java 8
題目說明
請撰寫一個程式,處理學生的成績資料。 輸入會給定一個成績表格,代表 m 位學生在 n 個科目的成績。 請計算並輸出每一個科目的平均成績。 關於平均成績的計算方式:將該科目所有學生的成績加總後,除以學生總數 m,結果必須使用 Math.round 進行四捨五入取整數。
提示一:
// 建立一個二維陣列來儲存所有分數
// scores[學生索引][科目索引]
// 計算每一個科目的平均分數
// 外層迴圈跑科目 (j),因為我們要算的是每一列 (Col) 的平均
// 內層迴圈跑學生 (i),把該科目的所有學生成績加總
// 計算平均,注意要避免整數除法造成誤差
// 使用 Math.round 進行四捨五入,結果是 long 型態
// 輸出結果,後面加上空白提示二,另一種解法:
// 建立一個長度為 n 的陣列,用來儲存各科總分
// 用一個雙重迴圈,從外部讀取 m 個學生的 n 個科目的每筆成績
// 將該科目的成績加總到陣列對應位置
// 用一個迴圈,盤點各科總分陣列,計算並輸出每一科的平均值輸入值的格式
輸入的第一行包含兩個正整數 m 和 n,以空白分隔。 m 代表學生人數,n 代表科目數量。 接下來會有 m 行 (Rows) 資料。 每一行包含 n 個整數,代表該名學生在各個科目的分數,分數之間以空白分隔。 所有的輸入數值皆為整數。 成績範圍:[0, 100]。 m 與 n 的範圍:m >= 1, n >= 1。
輸出值的格式
請輸出一行,包含 n 個整數。 第 i 個整數代表第 i 個科目 (Column) 的平均成績(經過四捨五入)。 數字之間請用一個空白字元分隔。
各種需要注意的邊界條件
極小維度:只有 1 位學生或只有 1 個科目的情況 (m=1, n=1)。
極端數值:所有成績都是 0 分,或所有成績都是 100 分。
四捨五入臨界點:平均值剛好為 X.5 的情況(例如 80.5),Math.round 應該進位(例如變成 81)。
浮點數運算:計算平均時,若直接使用整數除法會導致小數部分被無條件捨去,必須換一種寫法。
不對稱矩陣:學生人數遠多於科目數,或科目數遠多於學生人數。
sample input1
3 2 80 90 70 85 90 95sample output1
80 90解釋: 共有 3 位學生,2 個科目。
- 第 1 個科目的平均:(80 + 70 + 90) / 3 = 240 / 3 = 80。
- 第 2 個科目的平均:(90 + 85 + 95) / 3 = 270 / 3 = 90。
sample input2
2 3 10 20 30 15 25 35sample output2
13 23 33解釋:
- 第 1 科:(10+15)/2 = 12.5 -> 四捨五入為 13。
- 第 2 科:(20+25)/2 = 22.5 -> 四捨五入為 23。
- 第 3 科:(30+35)/2 = 32.5 -> 四捨五入為 33。
Comments