【笔记】判断今年是闰年还是平年

版权声明:本文为博主原创文章,转载请标明出处! https://blog.csdn.net/qq_22644927/article/details/88097333

复习整理

问题1:什么是闰年

     维基百科上面是这样写的:闰年是比普通年分多出一段时间的年分,在各种历法中都有出现,目的是为了弥补人为规定的纪年与地球公转产生的差异。

问题2:为什么会有历法?为什么一年是365天,一个月30天,一天是24小时,1小时却是60分钟?

    古代时期的人类发现四季变换、昼夜交替具有周期性,通过不断的观察和总结,人们把四季交替的时间间隔,称之为年(回归年),太阳东升西落的时间间隔成为天(太阳日)。人们通过总结发现一年大概是365天,但是由于地球公转时间与人为规定一年的时间存在时间差(平均回归年是一年365.2422天),一年差0.2422天,四年就差了一天,100年就差了25天,如果不加修正,我们日历就会偏离自然现象(在春天过中秋节?在冬天过植树节?)。所以人们就发明了闰年和历法,来消除这种误差,我们现在用的这种历法叫做格里历,为什么用它呢?这就和它的闰年规则有关了,它的闰年规则如下:

  1. 公元年分除以4可整除但除以100不可整除,为闰年。
  2. 公元年分除以400可整除但除以3200不可整除,为闰年。
  3. 公元年分除以3200可整除但除以172800可整除,为闰年。

总结起来就是一句口诀:“四年一闰,百年不闰,四百年再闰”。

我们来做一个计算:400年有多少个闰年?400/4-400-100+400/400=100-4+1=97个闰年。400年平均每年多少天?365+97/400=365.2425天,是不是非常接近回归年(365.2422天),比较之下平均一年的误差只有0.0003天,也就是说每1/0.0003=3333年的时间,误差只有一天。

所以闰年的计算规则,就是一套人为设计的算法,用来接近自然年,以弥补人类习以为常的整数计数历法和自然规律之间的恒差。

举个简单的例子(不考虑一千年后的事情---公元3200年)

#include<stdio.h>
int main(void)
{
    int year = 2019; //今年是2019年

    if((year%4==0&&year%100!=0)||year%400==0)
    {
        printf("今年是闰年\n");
    }
    else
    {
        printf("今年是平年\n");
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_22644927/article/details/88097333