#include <stdio.h>
int get_weekday(int year, int month, int day) {
if (month == 1 || month == 2) {
month += 12;
year--;
}
int w = (day + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400) % 7;
return w;
}
void print_calendar(int year, int month) {
int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
days_in_month[2] = 29;
}
int first_day_of_month = get_weekday(year, month, 1);
const char *month_names[] = {"", "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
printf("%s %d\n", month_names[month], year);
printf("Su Mo Tu We Th Fr Sa\n");
int day = 1;
while (day <= days_in_month[month]) {
for (int i = 0; i < 7; i++) {
(i < first_day_of_month || day > days_in_month[month]) ? printf(" ") : printf("%2d ", day++);
}
printf("\n");
first_day_of_month = 0;
}
printf("\n");
}
int main() {
int year, month;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
print_calendar(year, month);
return 0;
}