- 二維陣列(Two dimension array)
- 語法格式:
資料型態 陣列名稱 [列(橫)] [行(直)]
資料型態 陣列名稱 [列] [行]
- 範例說明:
int myarray[ 3
][ 2 ]
佔用(3x2) x 4bytes(int)= 3*2*sizeof(int)= 24bytes的記憶空間.
|
行(直) |
列(橫) |
[0,
0] |
[0,
1] |
[1,
0] |
[1,
1] |
[2,
0] |
[2,
1] |
|
C語言的陣列,在記憶體都是以連續的記憶體空間來處理,
而排列的方式是以 row-major 方式,讓多維對應到一維來處理。
記憶體中的排列
myarray[0,
0] |
myarray[0,
1] |
myarray[1,
0] |
myarray[1,
1] |
myarray[2,
0] |
myarray[2,
1] |
- 範例1:
int myarray[2][3] = {
{9, 8, 7},
{6, 5, 4}
};
myarray[0][2]的值是多少?
myarray[1][2]是多少?
請試著想看看,再用程式驗證一下.
- 範例2:
宣告一個二維陣列,將每週星期幾的名稱(前三字母)存入
陣列有7個字串,每個字串有3個字元,
可宣告成:
char weekday[7][4] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
或使用指標來處理
char *weekday[7] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
以for迴圈將二維陣列weekday印出來.
for(i=0; i<?; i++){
for(j=0; j<?; j++){
printf("%c", weekday[i][j]);
}
printf("\n");
}
或
for(i=0; i<7; i++){
printf("%s ", weekday[i]);
}
- 練習1:
請使用二維陣列,輸入五位同學的國文與英文成績,並列出各科最高分。
- 練習2:
寫一個程式,輸入西元年、月、日(以空格間隔),輸出該日期為星期幾(weekday)
(每4年閏、每100年不閏、每400年閏)
推算方法:
先推算某年每個月第一日為星期幾的式子,建表紀錄,
再回推西元0年的表,觀察上述規律並利用,推算完整的計算式.
2007 5 21 -> Mon
2018 7 1 -> Sun
2019 6 13 -> Thu
- 練習3:
輸入一個數字(<=15),請輸出一個矩陣,其數值等於左邊和上面元素的和。(95軟研考題)
Input matrix dimention:
1
1
Input matrix dimention:
3
1 1 1
1 2 3
1 3 6
Input matrix dimention:
5
1 1 1 1
1
1 2 3 4
5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
|
|