程式設計基礎(虛擬碼追蹤)

以下列程式將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
  1. A7
  2. B11
  3. 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。
練習這個領域 前往領域頁面

相關計算工具

程式設計基礎(虛擬碼追蹤)的其他題目

  1. 陣列的元素編號從1開始,+ 表示字串的串接。執行下列程式後 r 的值為下列何者?
  2. 下列函式 isPal 在字串型陣列 s 的字元排列無論從前或從後讀都相同(回文)時回傳 true。陣列的元素編號從1開始。程式中的【a】應填入下列何者?
  3. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 f(9087) 呼叫下列函式 f 時,回傳值為下列何者?
  4. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 toBin(12) 呼叫下列函式 toBin 時,回傳值為下列何者?
  5. 下列程式以減法使兩個整數 a、b 逐漸相等。執行後 k 的值為下列何者?