dataType arrayName[length1][length2];
length1:行數(第一維)length2:列數(第二維)int a[3][4]; → 3 行 4 列,共 12 元素C 語言二維數組在內存中按行連續存放:
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] ... a[2][3]
int a[5][3] = {
{80, 75, 92}, // 第 0 行
{61, 65, 71}, // 第 1 行
{59, 63, 70},
{85, 87, 90},
{76, 77, 85}
};
int a[5][3] = {80,75,92, 61,65,71, 59,63,70, 85,87,90, 76,77,85};
5 學生 × 3 科目,求各科平均分與總平均分。
#include <stdio.h>
int main() {
int a[5][3] = {
{80, 75, 92}, // 張:數學、C、英語
{61, 65, 71}, // 王
{59, 63, 70}, // 李
{85, 87, 90}, // 趙
{76, 77, 85} // 周
};
int v[3] = {0}; // 各科平均分
int average; // 總平均分
// 遍歷科目(列),累加該科所有學生(行)成績
for (int i = 0; i < 3; i++) {
int sum = 0;
for (int j = 0; j < 5; j++) {
sum += a[j][i]; // 注意:a[行][列] = a[學生][科目]
}
v[i] = sum / 5;
}
average = (v[0] + v[1] + v[2]) / 3;
printf("Math: %d\nC Language: %d\nEnglish: %d\n", v[0], v[1], v[2]);
printf("Total Average: %d\n", average);
return 0;
}
Math: 72 C Language: 73 English: 81 Total Average: 75
a[3][4] 可視為 3 個一維數組:
a[0] → 第 0 行(4 元素):a[0][0]..a[0][3]a[1] → 第 1 行a[2] → 第 2 行a[0]、a[1]、a[2] 是數組名(首地址),不能作為下標變量使用。
int a[3][3] = {{1}, {2}, {3}}; // 每行首元素賦值,其餘補 0
// 結果:
// 1 0 0
// 2 0 0
// 3 0 0
int a[3][3] = {{0,1}, {0,0,2}, {3}};
// 結果:
// 0 1 0
// 0 0 2
// 3 0 0
全體初始化時,第一維可省略:
int a[][3] = {1,2,3,4,5,6,7,8,9}; // 編譯器推導為 3 行
二維數組是矩陣運算基礎:
b[j][i] = a[i][j]