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

為了把陣列 a 的元素反轉順序而寫了下列程式。陣列的元素編號從1開始。執行後 a 的內容為下列何者?

整數型陣列: a ← {1, 2, 3, 4, 5, 6}
整數型: n ← 6, t
for (i 從 1 到 n 每次加 1)
  t ← a[i]
  a[i] ← a[n − i + 1]
  a[n − i + 1] ← t
endfor
  1. A{6, 5, 4, 3, 2, 1}
  2. B{6, 5, 4, 4, 5, 6}
  3. C{1, 2, 3, 4, 5, 6}
查看答案與解析

正確答案:C. {1, 2, 3, 4, 5, 6}

迴圈內的3行會交換 a[i] 與 a[n − i + 1] 的值。i = 1〜3 時前半與後半交換,暫時成為 {6, 5, 4, 3, 2, 1}。但終值是 n,所以 i = 4〜6 時又再交換一次 a[4] 與 a[3]、a[5] 與 a[2]、a[6] 與 a[1],回到原本的順序。要反轉順序,應把終值設為 n ÷ 2(n = 6 時為3),讓每一組只交換一次。

  • A. 這是在 i = 3 停止時的結果。i = 4〜6 時會把同一組再交換一次。
  • B. 這是不使用 t、只執行 a[i] ← a[n − i + 1] 時的結果。
  • C. 正確。每一組都交換兩次,因此回到原本的順序。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 陣列的元素編號從1開始。執行下列程式後,陣列 a 的內容為下列何者?
  2. 陣列的元素編號從1開始。下列程式比較相鄰的元素。執行後 c 的值為下列何者?
  3. m[i, j] 表示二維陣列 m 第 i 列第 j 行的元素,元素編號從1開始。執行下列程式後 s 的值為下列何者?
  4. 以下列程式將4列5行的二維陣列 m 的元素移到元素數為20的陣列 b。m[i, j] 表示第 i 列第 j 行的元素,元素編號從1開始。m[3, 2] 會被指派到 b 的哪一個元素編號?
  5. 陣列的元素編號從1開始,+ 表示字串的串接。執行下列程式後 r 的值為下列何者?