C++ 编程:检查闰年
为了理解这个示例,你应该具备以下 C++ 编程 主题的知识:
所有能被 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;
// 如果年份能被 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;
}