在这篇文章中,我们提出了概念和算法来检查一个给定的年份是否是闰年。
简介
闰年是指每4年后出现的年份。闰年的不同之处在于,它有366天而不是365天。
地球绕太阳运行需要365.242190天,或365天5小时48分56秒。但为了简单起见,只有365天的整数天被视为一个日历年。如果不考虑一年中剩余的部分,在几个世纪的时间里,就会开始影响季节的周期性变化。
连续四年累计的0.25天被视为一天,然后加到第四年,这使它成为闰年。增加的这一天被加到2月,作为该月的第29天。
在一个世纪中,我们由于每四年的闰年而增加了25天,而实际上我们应该增加24.2375天。因此,我们在每100年中多加了0.7625天。因此,在四个世纪的跨度中,这个误差将变成3.05天。因此,为了避免每四个世纪都有3.05天的累积误差,决定在四个世纪中只有一个世纪有25个闰年,而其他世纪则有24个闰年。由于这个原因,并不是每四年都是闰年。规则是,如果该年可被100除以而不可被400除以,则跳过闰年。
本文的目的是建立一个程序,以确定输入的年份是否是闰年。
逻辑
一个年份要想成为闰年,必须满足以下条件:
- 该年是400的倍数。
- 该年是4的倍数,但不是100。
一个世纪的年份是100的倍数,并且以00结束。例如,1500年是一个世纪年。第二个条件是用来区分世纪年和闰年的。一个世纪年只有在它能被400除以的情况下才会被认为是一个闰年。例如,1200、1600和2000年都是世纪闰年。另一方面,1300、1500和1900是世纪年,不符合闰年的条件。
伪代码
如果年份能被400整除 ,则该年为闰年
如果年份能被4整除但不能被100整除 ,则该年为闰年
否则 该年为非闰年
为了更好地理解该伪代码,请参考以下流程图
执行情况
Python
year = int(input('Enter year: '))
if(year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)):
print(year,'is a leap year')
else:
print(year,'is not a leap year')
Java:
import java.util.*;
class LeapYear {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter year: ");
int year = sc.nextInt();
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
System.out.println("\n"+ year + " is a leap year");
}
else{
System.out.println("\n"+ year + " is not a leap year");
}
}
}
C++:
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter year: ";
cin >> year;
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
cout << year << " is a leap year";
}
else{
cout << year << " is not a leap year";
}
return 0;
}
输出:
输入年份:2000年 2000年是一个闰年
通过OpenGenus的这篇文章,你一定对如何检查某个年份是否为闰年有了完整的认识。