程式設計基礎(虛擬碼追蹤)
÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 toBin(12) 呼叫下列函式 toBin 時,回傳值為下列何者?
○整數型: toBin(整數型: x)
整數型: y ← 0, p ← 1
while (x > 0)
y ← y + (x mod 2) × p
p ← p × 10
x ← x ÷ 2
endwhile
return y
- A11
- B100
- C1100
查看答案與解析
正確答案:C. 1100
x mod 2 是二進位的個位數,x ← x ÷ 2 是在二進位中右移1位的操作。x 依序變為 12、6、3、1、0,從低位依序得到 0、0、1、1。p 依序為 1、10、100、1000,每次變為10倍,因此 y = 0 × 1 + 0 × 10 + 1 × 100 + 1 × 1000 = 1100。這是把12以二進位表示時的各位數,當作十進位的各位數排列而成的值。
- A. 這是像 y ← y × 10 + x mod 2 那樣把得到的位數依序往上堆時的值,位數的排列會反過來(0011)。
- B. 這是寫成 while (x > 1),在加上最高位的1之前就停止時的值。
- C. 正確。12 的二進位為 1100。