程式設計基礎(虛擬碼追蹤)
以下列程式將4列5行的二維陣列 m 的元素移到元素數為20的陣列 b。m[i, j] 表示第 i 列第 j 行的元素,元素編號從1開始。m[3, 2] 會被指派到 b 的哪一個元素編號?
整數型: k ← 0
for (i 從 1 到 4 每次加 1)
for (j 從 1 到 5 每次加 1)
k ← k + 1
b[k] ← m[i, j]
endfor
endfor
- A7
- B11
- C12
查看答案與解析
正確答案:C. 12
外層的 i 表示列,內層的 j 表示行,因此依第1列的5個、第2列的5個、第3列的元素的順序填入 b(列優先順序)。m[3, 2] 之前有第1列與第2列的10個元素以及 m[3, 1],因此 k = 10 + 2 = 12。一般可用 (i − 1) × 5 + j 求得。若直接使用元素編號從0開始時的式子 (i − 1) × 5 + (j − 1),就會差一而得到11。
- A. 這是逐行填入(行優先順序)時的 (j − 1) × 4 + i 的值。
- B. 這是以元素編號從0開始時的式子計算的值,差了一。
- C. 正確。(3 − 1) × 5 + 2 = 12。