题目

日期结构体:判断是否合法日期

思路

读 y,m,d,校验月日范围,2 月用闰年天数;daysInMonth(y,m) 辅助函数返回该月最大日。

解题分析

月份 1~12,日期不超过当月天数,2 月看闰年。不要用固定 2 月 28 判所有年份。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int y = 2024, m = 2, d = 29;
        int[] dd = {0,31,28,31,30,31,30,31,31,30,31,30,31};
        boolean leap = (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0);
        int dim = (m == 2 && leap) ? 29 : dd[m];
        System.out.println(m >= 1 && m <= 12 && d >= 1 && d <= dim ? "yes" : "no");
    }
}

运行示例

输出:

yes