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

÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 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
  1. A11
  2. B100
  3. 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。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 下列程式以減法使兩個整數 a、b 逐漸相等。執行後 k 的值為下列何者?
  2. 下列函式 isLeap 在西元 y 年為閏年時回傳 true。and 比 or 先計算。isLeap(y) 回傳 true 的 y 為下列何者?
  3. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 pow(2, 10) 呼叫下列函式 pow 時,pow 被呼叫的次數(含第一次呼叫)為下列何者?
  4. 以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?
  5. 以 p(3) 呼叫下列程序 p 時,輸出的值的順序為下列何者?