5.3 多維陣列
二維陣列
把索引值擴展為 2 維,我們就可以得到二維陣列。
一個大小為 m x n 的二維陣列,可以這樣宣告。
// 宣告一個 4 x 6 的 int 二維陣列
int A[4][6];
和一維陣列一樣,可以在宣告時給定初值。
int A[4][6] = {
{1, 2, 3, 4, 5, 6},
{5, 12, 7, 11, 9, 8},
{10, 21, 13, 22, 23, 16},
{4, 78, 13, 45, 51, 11},
};

搭配雙層迴圈遍歷其值
我們可以使用雙層迴圈,把前面那個二維陣列的值印出來。
for(int i=0; i<4; i++) {
for(int j=0; j<6; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
1 2 3 4 5 6
5 12 7 11 9 8
10 21 13 22 23 16
4 78 13 45 51 11
練習:2D 地圖
給定一張 m x n 大小的地圖,以及各地貌的代表數字,請輸出該地圖。
輸入說明:
第一行是兩個正整數 m n,表示陣列的 列數(row)、行數(column)。
接下來是共 m 列,每列有 n 個整數的地圖資訊,表示該位置的地貌代碼。
接著是一個整數 k,表示有 k 種地貌。
最後是 k 列,每列為一個整數 i 與一個字元 c,表示代碼 i 的地貌為 c。
輸出說明:
輸出該地圖的地貌,如範例輸出。
範例輸入:
3 4
1 1 1 1
2 2 0 1
1 2 0 1
3
0 _
1 #
2 *
範例輸出:
####
**_#
#*_#
#include <iostream>
using namespace std;
int main()
{
int m, n;
cin >> m >> n;
int M[m][n];
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
cin >> M[i][j];
}
}
int k;
cin >> k;
int N[k];
char T[k];
for(int i=0; i<k; i++) {
cin >> N[i] >> T[i];
}
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
for(int u=0; u<k; u++) {
if(M[i][j]==u) {
cout << T[u];
break;
}
}
}
cout << endl;
}
return 0;
}