我们都知道闰年和平年。闰年的判定是“四年一闰,百年不闰,四百年又一闰”。下面哪个条件可以用来判定某一年 $y$ 是否是闰年?
这题考闰年判定逻辑,命题人爱用取模和整除混编坑。拿到题先想:闰年到底是能被4整除,还是能被100整除,还是能被400整除?把规则拆成‘四年一闰、百年不闰、四百年又一闰’三句人话,再对应到代码里的取模和整除,排除法秒杀。
最容易错选 A 或 B。A 把整除当取模用,逻辑全反;B 只要被100整除就闰年,把‘百年不闰’给漏了。还有同学会纠结‘and’和‘or’的优先级,其实只要记住:能被4整除且不能被100整除,或者能被400整除,才是闰年。
【考点与概念】 闰年判定规则是‘四年一闰,百年不闰,四百年又一闰’。用程序语言翻译,就是:年份能被4整除且不能被100整除,或者能被400整除。
【命题视角】 命题人常把‘整除’(//)和‘取模’(%)混在一起考,或者把逻辑词‘and’‘or’位置调包。比如选项A把整除当取模用,选项B把‘能被4整除’漏了,只留了‘能被100整除’,这都是典型的挖坑点。
【思考心法】 拿到题先别急着看代码,先把规则翻译成自然语言: 1. 能被4整除吗? 2. 如果能,再看能不能被100整除。 3. 如果既能被4整除又能被100整除,那还要看能不能被400整除。 4. 最终结论:能被4整除且不能被100整除,或者能被400整除。
然后对照选项,排除明显不对的。
【逐项分析】 A. y//4 and y//100 or y//400:这里用整除判断‘取模是否不为0’,逻辑全反,错。 B. y%4==0 or y%100==0 or y%400==0:只要被100整除就闰年,漏了‘百年不闰’,错。 C. y%4==0 and y%100!=0 or y%400==0:完全符合规则,正确。 D. y%400==0 and y%100!=0 and y%400==0:逻辑重复且矛盾,错。
【避坑】 注意否定词‘!=’的位置,‘百年不闰’意味着被100整除时必须排除,所以是 y%100!=0。还有优先级问题,C 选项里 and 优先级高于 or,先算前半部分再算后半部分,逻辑严密。
【考频与趋势】 根据统计,闰年判定这类基础逻辑题在近三年 CSP-J/S 中每年必考 1 次,2024 年第 5 题再次出现,说明命题人仍偏爱这种‘规则转代码’的题型。未来可能继续以单选题形式考察,或升级为小计题要求计算某年是否为闰年。
【预测】 暂无足够依据预测未来具体形式,但可预期仍会围绕‘整除与取模’‘逻辑词优先级’‘百年不闰’这三个核心点出题。