闰年
- 闰年是历法中的名词,分为普通闰年和世纪闰年。
注意闰年(公历中的名词)和闰月(农历中的名词)并没有直接的关联,公历只分闰年和平年,平年有365天,闰年有366天(2月中多一天);平年中也可能有闰月(如2017年是平年,农历有闰月,闰六月)。
基本解释
凡阳历中有闰日(2月29日)的年份,闰余(岁余置闰。阴历每年与回归年相比所差的时日)。
1582年以来的置闰规则:
普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;如果公元前B年的B(正数)除以4余1,那么它也是闰年。
产生原因
通常的解释是说一年有多少天多少小时多少分钟,取整数365天后,还有多余的,累积达到一天(24小时)后,就多加一天,多加一天的这一年就是闰年。这个解释只是告诉大家怎么计算,是人为设置的东西。
最根本的原因是:地球绕太阳运行的周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365天,比回归年短约0.2422天,所余下的时间约为每四年累积一天,故在第四年的2月末加1天,使当年的时间长度变为366天,这一年就是闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样,经过400年就会多算出大约3天来。因此,每400年中要减少3个闰年。所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年。
这就是通常说的:四年一闰,百年不闰,四百年再闰。
例如:2000年是闰年,2100年则是平年。
C++ 实例
#include <iostream>
using namespace std;
int main()
{
int year;
string choose;
while (true)
{
cout << "输入年份: ";
cin >> year;
if (year % 4 == 0)
{
if (year % 100 == 0)
{
// // 这里如果被 400 整除是闰年
if (year % 400 == 0)
cout << year << " 是闰年";
else
{
cout << year << " 不是闰年";
}
}
else
{
cout << year << " 是闰年";
}
}
else
{
cout << year << " 不是闰年";
}
cout << endl;
cout << "是否继续(yes/no)" << endl;
cin >> choose;
if (choose == "no" || choose == "n")
{
system("pause");
return 0;
}
else
{
system("cls");
}
}
}