寻找leap年的逻辑如何工作?

时间:2018-10-12 10:29:38

标签: c++ logic

该程序是关于寻找the年的,但我听不懂逻辑:

if(year%4==0 and not year%100==0 or year%4==0 and year%100==0 and year%400==0)

请帮助我理解逻辑(我知道!||&&运算符的工作原理。)

2 个答案:

答案 0 :(得分:2)

这段代码试图了解您提供的年份是否是 le年。一年是a年,如果:

  • 可以被4整除,因此year%4==0 ,不能被除以100,因此year%4==0 and year%100==0 and year%100==0

或者,如果:

  • 可以被4 除以100 被400整除,因此year%400==0

如果添加几个方括号,整个表达式将更具可读性:

if( (year%4==0 and not year%100==0) or (year%4==0 and year%100==0 and year%400==0) )

注释:整个表达式可以简化。由于可以被400整除的数字也可以被4和100整除,因此您可以这样写:

if( (year%4==0 and not year%100==0) or year%400==0 )

答案 1 :(得分:0)

确定一年是否为a年的算法如下:

  • 除可以精确地除以100的年份外,每个可以精确地除以4的年份都是a年,但是如果可以将其精确地除以400,则这些百年就是are年。

例如,1700、1800和1900年不是leap年,而1600和2000年是were年。