程式設計基礎(虛擬碼追蹤)
⊕ 表示逐位元的互斥或。執行下列程式後 x 與 y 的值為下列何者?
整數型: x ← 12, y ← 10
x ← x ⊕ y
y ← x ⊕ y
x ← x ⊕ y
- Ax = 10, y = 12
- Bx = 6, y = 12
- Cx = 12, y = 10
查看答案與解析
正確答案:A. x = 10, y = 12
以二進位表示,12 = 1100、10 = 1010。第1行使 x = 1100 ⊕ 1010 = 0110 = 6,第2行使 y = 0110 ⊕ 1010 = 1100 = 12,第3行使 x = 0110 ⊕ 1100 = 1010 = 10。這是利用與同一個值做兩次互斥或就會還原(a ⊕ b ⊕ b = a)的性質,不使用工作用變數就交換值的方法。
- A. 正確。使用3次互斥或,x 與 y 就會交換。
- B. 這是執行到第2個指派時的值。
- C. 這是以為值維持不變的情況。實際上會交換。