编辑代码

#include <stdio.h>

int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        return 1;  // It's a leap year
    }
    return 0;      // It's not a leap year
}

void NextDate(int *month, int *day, int *year) {
    int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    if (*month < 1 || *month > 12 || *day < 1 || *day > 31 || *year < 1812 || *year > 3000) {
        printf("Invalid date.\n");
        return;
    }

    if (*month == 2 && isLeapYear(*year)) {
        daysInMonth[2] = 29;  // February has 29 days in a leap year
    }

    if (*day < daysInMonth[*month]) {
        (*day)++;
    } else {
        *day = 1;
        (*month)++;
        if (*month > 12) {
            *month = 1;
            (*year)++;
        }
    }
}

void printCalendar(int year) {
    int month = 1;
    int day = 1;
    int currentYear = year;

    printf("Calendar for year %d:\n", year);

    while (currentYear == year) {
        printf("%d-%02d-%02d\n", currentYear, month, day);
        NextDate(&month, &day, &currentYear);
    }
}

int main() {
    printCalendar(2024);
    return 0;
}