閏年判斷_閏年的判斷下一個閏年
阿新 • • 發佈:2021-01-22
技術標籤:閏年判斷
好久不見,今天分享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;}