float stu[3][3]:
第 1 維 = 學生索引 (0~2)
第 2 維 = 科目索引 (0=英文, 1=微積分, 2=C語言)
#include <stdio.h>
int main()
{
float stu[3][3];
float sum[3] = {0}, avg[3] = {0};
const char* subject[3] = {"英文", "微積分", "C語言"};
// 輸入階段
for (int i = 0; i < 3; i++) {
printf("第 %d 位同學成績:\n", i+1);
for (int j = 0; j < 3; j++) {
printf(" %s: ", subject[j]);
scanf("%f", &stu[i][j]);
}
}
// 計算階段
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
sum[i] += stu[i][j];
for (int i = 0; i < 3; i++)
avg[i] = sum[i] / 3.0;
// 輸出階段
printf("\n=== 學生成績統計 ===\n");
for (int i = 0; i < 3; i++) {
printf("學生 %d: 總分 %.1f 平均 %.1f\n", i+1, sum[i], avg[i]);
}
// 進階:各科平均
printf("\n=== 各科平均 ===\n");
for (int j = 0; j < 3; j++) {
float subSum = 0;
for (int i = 0; i < 3; i++) subSum += stu[i][j];
printf("%s: %.1f\n", subject[j], subSum/3.0);
}
return 0;
}
=== 學生成績統計 ===
學生 1: 總分 253.0 平均 84.3
學生 2: 總分 235.0 平均 78.3
學生 3: 總分 275.0 平均 91.7
=== 各科平均 ===
英文: 82.3
微積分: 86.0
C語言: 86.0
| 特性 | 獨立變數版 (ID 1434) | 二維陣列版 (本題) |
|---|---|---|
| 程式碼行數 | 較少 | 較多 |
| 資料保留 | 無(處理完即丟) | 完整保留 |
| 後續分析 | 困難 | 容易(各科統計、排序等) |
| 擴展性 | 差 | 佳(增學生/科目只改常數) |