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

下列函式 isLeap 在西元 y 年為閏年時回傳 true。and 比 or 先計算。isLeap(y) 回傳 true 的 y 為下列何者?

○邏輯型: isLeap(整數型: y)
  return y mod 4 = 0 and y mod 100 ≠ 0 or y mod 400 = 0
  1. A1800
  2. B1900
  3. C2000
查看答案與解析

正確答案:C. 2000

and 的優先順序高於 or,因此條件與 (y mod 4 = 0 and y mod 100 ≠ 0) or y mod 400 = 0 相同。能被4整除但不能被100整除的年,或能被400整除的年是閏年。1800 與 1900 能被100整除但不能被400整除,因此為 false。2000 能被400整除,因此為 true。

  • A. 1800 mod 100 = 0 使 and 的部分為偽,1800 mod 400 = 200 使 or 的右側也為偽,因此為 false。
  • B. 1900 mod 100 = 0 使 and 的部分為偽,1900 mod 400 = 300 使 or 的右側也為偽,因此為 false。
  • C. 正確。2000 mod 400 = 0,因此為 true。
練習這個領域 前往領域頁面

相關計算工具

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

  1. ÷ 為除法,代入整數型變數(含引數)時捨去小數部分。以 pow(2, 10) 呼叫下列函式 pow 時,pow 被呼叫的次數(含第一次呼叫)為下列何者?
  2. 以 s(7) 呼叫下列函式 s 時,回傳值為下列何者?
  3. 以 p(3) 呼叫下列程序 p 時,輸出的值的順序為下列何者?
  4. 以 fib(10) 呼叫下列函式 fib 時,回傳值為下列何者?
  5. 以 c(4, 2) 呼叫下列函式 c 時,c 被呼叫的次數(含第一次呼叫)為下列何者?