程式設計基礎(虛擬碼追蹤)
下列函式 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
- A1800
- B1900
- 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。