所有能被 4 整除的年份都是闰年,但世纪年(以 00 结尾的年份)除外,世纪年必须能被 400 整除才是闰年。
例如,
闰年 | 非闰年 |
---|---|
1968 | 1971 |
2004 | 2006 |
2012 | 2010 |
1200 | 1700 |
1600 | 1800 |
2000 | 1900 |
在下面的示例中,用户被要求输入一个年份,然后程序会检查用户输入的年份是否为闰年。
示例 1:使用 if...else 阶梯检查闰年
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
// leap year if perfectly divisible by 400
if (year % 400 == 0) {
cout << year << " is a leap year.";
}
// not a leap year if divisible by 100
// but not divisible by 400
else if (year % 100 == 0) {
cout << year << " is not a leap year.";
}
// leap year if not divisible by 100
// but divisible by 4
else if (year % 4 == 0) {
cout << year << " is a leap year.";
}
// all other years are not leap years
else {
cout << year << " is not a leap year.";
}
return 0;
}
输出 1
Enter a year: 1900 1900 is not a leap year.
输出 2
Enter a year: 2012 2012 is a leap year.
示例 2:使用嵌套 if 检查闰年
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
cout << year << " is a leap year.";
}
else {
cout << year << " is not a leap year.";
}
}
else {
cout << year << " is a leap year.";
}
}
else {
cout << year << " is not a leap year.";
}
return 0;
}
这里,我们使用了嵌套的 if
语句来检查用户输入的年份是否为闰年。
首先,我们检查 year 是否能被 4 整除。如果不能被整除,则不是闰年。
如果能被 4 整除,则我们使用内部的 if
语句检查 year 是否能被 100 整除。
如果不能被 100 整除,但能被 4 整除,那么它就是闰年。
我们知道世纪年不是闰年,除非它们能被 400 整除。
因此,如果 year 能被 100 整除,另一个内部的 if
语句会检查它是否能被 400 整除。
如果能被 400 整除,那么它就是闰年。否则,它就不是闰年。
示例 3:使用逻辑运算符检查闰年
我们可以使用 && 和 || 运算符
将闰年的条件合并到单个 if...else
语句中。
#include <iostream>
using namespace std;
int main() {
int year;
cout << "Enter a year: ";
cin >> year;
// if year is divisible by 4 AND not divisible by 100
// OR if year is divisible by 400
// then it is a leap year
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
cout << year << " is a leap year.";
}
else {
cout << year << " is not a leap year.";
}
return 0;
}