闰年求解的方法
程序员文章站
2024-01-14 19:55:40
...
闰年求解的方法
闰年是公历中的名词。闰年分为普通闰年和世纪闰年。
普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。闰年共有366天(1-12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天)。
凡阳历中有闰日(2月为29日)的年;闰余(岁余置闰。阴历每年与回归年相比所差的时日)。
注意闰年(公历中名词)和闰月(农历中名词)并没有直接的关联,公历中只分闰年和平年,平年有365天,而闰年有366天(2月中多一天);平年中也可能有闰月(如2017年是平年,农历有闰月,闰6月)。
所以,是闰年的判定条件为:
年份是4的倍数的,且不是100的倍数
年份是400的倍数是闰年
打印1000——2000之间的闰年:
//打印闰年
//打印1000年到2000年之间的闰年
#include<stdio.h>
int main()
{
int i = 1000;
for (i=1000; i <= 2000; i++)
{
if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0))
{
printf("%d ", i);
}
}
return 0;
}
优化方法:
因为闰年4年出现一次,所以可以在i++的基础上换成i+=4,这样做得好处是减少了判定次数,提高了效率
如下:
//打印闰年
//打印1000年到2000年之间的闰年
#include<stdio.h>
int main()
{
int i = 1000;
for (i=1000; i <= 2000; i+=4)
{
if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0))
{
printf("%d ", i);
}
}
return 0;
}
上一篇: C语言中进制的转换和数据类型的区别
下一篇: IDEA springboot项目热部署