1、产生闰年原因:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year).公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年.
2、但是,上面算法又有了一个问题.就是0.2422*4=0.9688,比一天还差0.0322天,每4年差0.0322天不算多,但每400年就会差了约3天.即是说,假如每4年一个闰年,那么每400年就会有100个闰年,然后会多算了3天.
所以,就规定了每四百年中要减少三个闰年.公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年.
综合以上2点,就有了现有的闰年判断标准.
闰年的判断规则为
4年一闰,百年不闰,四百年再闰。
对于任意的年份值year,写成C语言的判断格式为
year%400 == 0 || (year %4 == 0 && year %100 != 0)
只要符合这个条件的year值,均为闰年。
封装成函数可以写作:
int is_leap_year(int year) { return year%400 == 0 || (year %4 == 0 && year %100 != 0); } |