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;

  // 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;
}

在我们结束之前,让我们来检验一下你对这个例子的理解!你能解决下面的挑战吗?

挑战

编写一个函数来检查年份是否为闰年。

  • 如果该年份是闰年,则返回 "It's a leap year"。否则,返回 "It's not a leap year"
  • 闰年能被 4 整除,但世纪年(以 00 结尾的年份)除外。世纪年仅当能被 400 整除时才是闰年。
  • 例如,如果年份是 2000,则返回值应为 year = "It's a leap year"
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战