闰年逻辑混乱

时间:2015-03-04 15:10:20

标签: c

我真的不明白表演的逻辑: -

if(num%400==0)
stmts;
else if(num%100==0)
stmts;

测试闰年。仅仅找到100的模数就足够了吗?

提前致谢!!

2 个答案:

答案 0 :(得分:1)

一年是否实现跨越的逻辑:

  1. 如果年份可被4整除,请转到步骤2.否则,请转到步骤5.
  2. 如果年份可以被100整除,请转到步骤3.否则,请转到步骤4.
  3. 如果年份可被400整除,请转到步骤4.否则,请转到步骤5.
  4. 这一年是闰年(它有366天)。
  5. 这一年不是闰年(它有365天)。
  6. 所以,条件是

    if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))  
        printf("Year is a leap year\n");
    else  
        printf("Not a leap year\n");
    

答案 1 :(得分:0)

没有。每个世纪都不是闰年。只有被400整除的是。

请参阅http://en.wikipedia.org/wiki/Leap_year#Algorithm