好久不见,今天分享C++的经典题目——判断闰年。
【题目描述】
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。
其根本的原因是:地球绕太阳运行周期为365天5小时48分46秒,而公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为每四年累计一天,使当年的长度为366日,这一年就为闰年。
现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来。因此每四百年中要减少3个闰年。
所以公历规定:年份不是100的倍数时,当且仅当年份是4的倍数时是闰年;年份是100的倍数时,当且仅当年份是400的倍数时是闰年。
输入年份,输出下一个闰年的年份。
【输入格式】
一行,一个整数YY代表年份。
【输出格式】
一行,输出下一个闰年的年份
【输入样例\#1】
1896——本身就是闰年
【输出样例\#1】
1904——1900不是400的倍数
【输入样例\#2】
1582
【输出样例\#2】
1584
【数据说明】
1\le Y \le 99991≤Y≤9999
参考代码(左右滑动,可以查看全部哦)
#include #include using namespace std; int main(){ int year; scanf("%d", &year); if ((year + 1) % 4 == 0 && (year + 1) % 100 != 0 || (year + 1) % 400 == 0) { printf("%d", year + 1); } else { if ((year + 2) % 4 == 0 && (year + 2) % 100 != 0 || (year + 2) % 400 == 0) { printf("%d", year + 2);//百年不闰就是+8年,只需枚举1~8 } else { if ((year + 3) % 4 == 0 && (year + 3) % 100 != 0 || (year + 3) % 400 == 0) { printf("%d", year + 3); } else { if ((year + 4) % 4 == 0 && (year + 4) % 100 != 0 || (year + 4) % 400 == 4) { printf("%d", year + 4); } else { if ((year + 5) % 4 == 0 && (year + 5) % 100 != 0 || (year + 5) % 400 == 0) { printf("%d", year + 5); } else { if ((year + 6) % 4 == 0 && (year + 6) % 100 != 0 || (year + 6) % 400 == 0) { printf("%d", year + 6); } else { if ((year + 7) % 4 == 0 && (year + 7) % 100 != 0 || (year + 7) % 400 == 0) { printf("%d", year + 7); } else { printf("%d", year + 8); } } } } } } } return 0;}