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

下列程式的 and 在左側的式子為 false 時不評估右側的式子(短路求值)。cnt 是全域變數。執行後 cnt 的值為下列何者?

整數型: cnt ← 0
○邏輯型: even(整數型: k)
  cnt ← cnt + 1
  return k mod 2 = 0
for (i 從 1 到 5 每次加 1)
  if (i > 3 and even(i))
    輸出 i
  endif
endfor
  1. A1
  2. B2
  3. C5
查看答案與解析

正確答案:B. 2

i = 1〜3 時左側的 i > 3 為 false,因此不會呼叫右側的 even(i)。i = 4 與 i = 5 時 i > 3 為 true,因此會呼叫 even(i),cnt 變為2。輸出的只有整個條件為 true 的 i = 4。若是兩側一定都評估的方式,even 會被呼叫5次,cnt = 5。

  • A. 這是整個條件為 true 而輸出的次數(i = 4 的1次)。
  • B. 正確。只有 i = 4、5 時才呼叫 even。
  • C. 這是不做短路求值、每次都呼叫 even 時的值。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 下列程式在元素數為 n 的陣列 a 中尋找值 x,並把找到的元素編號求到 i。陣列的元素編號從1開始。and 與 or 在只看左側的式子就能決定結果時,不評估右側的式子。【a】中填入的條件式中,在 x 不在 a 中時會參照到範圍外 a[n + 1] 的是下列何者?
  2. 實數型的值以 IEEE 754 雙精度(binary64)表示,加法的結果捨入為最接近的可表示值。執行下列程式後 c 的值為下列何者?
  3. 類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。執行下列程式後 x 的值為下列何者?
  4. 類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。Counter 型的變數中存放的不是實例本身,而是指向實例的參照。執行下列程式後 x 的值為下列何者?
  5. 下列程式原本打算用兩個指派敘述交換 x 與 y 的值。執行後 x 與 y 的值為下列何者?