跳到主要内容

C++ 编程:检查闰年

为了理解这个示例,你应该具备以下 C++ 编程 主题的知识:

所有能被 4 完美整除的年份都是闰年,除了世纪年(以 00 结尾的年份),世纪年只有在能被 400 完美整除时才是闰年。

例如,

闰年非闰年
19681971
20042006
20122010
12001700
16001800
20001900

在下面的例子中,程序会要求用户输入一个年份,然后检查用户输入的年份是否是闰年。

示例 1:使用 if...else 阶梯检查闰年

#include <iostream>
using namespace std;

int main() {

int year;
cout << "Enter a year: ";
cin >> year;

// 如果年份能被 400 完美整除则为闰年
if (year % 400 == 0) {
cout << year << " is a leap year.";
}
// 如果能被 100 整除但不能被 400 整除则不是闰年
else if (year % 100 == 0) {
cout << year << " is not a leap year.";
}
// 如果不能被 100 整除但能被 4 整除则为闰年
else if (year % 4 == 0) {
cout << year << " is a leap year.";
}
// 所有其他年份都不是闰年
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** 整除,因此它是闰年。

我们知道,除非世纪年(以 **00** 结尾的年份)能被 **400** 整除,否则它们不是闰年。

所以,如果 `year` 能被 **100** 整除,另一个内部的 `if` 语句会检查它是否能被 **400** 整除。

如果能被 **400** 整除,它就是闰年。否则,就不是闰年。

## 示例 3:使用逻辑运算符检查闰年

我们可以使用 `&&` 和 `||` 运算符将判断闰年所需的条件合并到一个 `if...else` 语句中。

```cpp
#include <iostream>
using namespace std;

int main() {

int year;

cout << "Enter a year: ";
cin >> year;

// 如果年份能被 4 整除 且 不被 100 整除
// 或者 如果年份能被 400 整除
// 那么它是闰年
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;
}