题目链接

判断闰年

题目描述

给定一个年份(整数),判断它是否为闰年。闰年的判定规则如下:

  1. 如果年份能被 400 整除,则为闰年。
  2. 或者,如果年份能被 4 整除但不能被 100 整除,也为闰年。
  3. 除以上两种情况外,都不是闰年。

输入描述: 输入一个整数 year

输出描述: 如果 year 是闰年,输出字符串 "yes";否则输出 "no"。

解题思路

本题的核心是将闰年的两条判定规则,准确地翻译成代码中的逻辑表达式。

我们可以用一个 if 语句来包含这两个条件,两个条件之间是"或"的关系。

  • 条件1: year % 400 == 0 (能被400整除)
  • 条件2: year % 4 == 0 && year % 100 != 0 (能被4整除 且 不能被100整除)

将这两个条件用"或"(||)连接起来,就构成了完整的判断逻辑: if ( (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0) )

如果这个复合条件为真,则年份是闰年,输出 "yes"。否则,就不是闰年,输出 "no"。

代码

#include <iostream>

using namespace std;

int main() {
    int year;
    cin >> year;
    
    // 将闰年的两个判断条件用"或"逻辑连接
    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
        cout << "yes" << endl;
    } else {
        cout << "no" << endl;
    }
    
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        
        // 将闰年的两个判断条件用"或"逻辑连接
        if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
            System.out.println("yes");
        } else {
            System.out.println("no");
        }
    }
}
year = int(input())

# 将闰年的两个判断条件用 or 连接
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print("yes")
else:
    print("no")

算法及复杂度

  • 算法:逻辑条件判断。
  • 时间复杂度: - 这是一个固定的逻辑判断,与输入值大小无关。
  • 空间复杂度: - 仅需常数空间存储变量。