#P5711. 【深基3.例3】闰年判断

【深基3.例3】闰年判断

【深基3.例3】闰年判断

题目来源

洛谷 P5711

题目描述

输入一个年份,判断这一年是否是闰年,如果是输出 11,否则输出 00。

15821582 年以来,闰年的定义:

普通闰年:公历年份是 44 的倍数,且不是 100100 的倍数的,为闰年(如 20042004 年、20202020 年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是 400400 的倍数才是闰年(如 19001900 年不是闰年,20002000 年是闰年)。

输入格式

输入一个正整数 nn,表示年份。

输出格式

输出一行。如果输入的年份是闰年则输出 11,否则输出 00。

样例输入 1

1926

样例输出 1

0

样例输入 2

1900

样例输出 2

0

样例输入 3

2000

样例输出 3

1

样例输入 4

1996

样例输出 4

1

提示

一、&& 的优先级高于 ||

a && b || c        // 等价于 (a && b) || c
a || b && c        // 等价于 a || (b && c)

所以在 a || b && c 里,会先算 b && c,再和 a 取或。这经常和人的直觉相反。

二、复杂条件一律加括号

if ((a > 0 || b > 0) && c > 0) { ... }

加括号有三个好处:不依赖记忆、读代码的人一眼看懂、改条件时不容易出错。

三、比较运算符的优先级高于 && 和 ||

n > 0 && n < 10        // 等价于 (n > 0) && (n < 10)

所以比较可以不加括号,但混用 && 和 || 时必须加。

四、常见错误

  • 以为 && 和 || 同级、从左往右算;

  • 写出 a || b && c 却期望 (a || b) && c;

  • 在 || 两边写了不完整的条件。

  • 闰年两句话:能被 4 整除且不能被 100 整除;或者能被 400 整除。

  • 把这两句话分别写成两个条件,再用「或者」连起来,注意括号。

自查:用 1900(不是)、2000(是)、1996(是)、1926(不是)四个样例验证。