#include <stdio.h>
#include <stdlib.h>
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1; // 是闰年
} else {
return 0; // 不是闰年
}
}
int getDaysInMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
int getWeekday(int y, int m, int d) {
if (m == 1 || m == 2) {
m += 12;
y--;
}
return (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
}
int main() {
int year, month, day;
printf("请输入年份:");
while (scanf("%d", &year) != 1 || year < 0 || getchar() != '\n') {
printf("请输入正确的数字\n");
while (getchar() != '\n');
printf("请输入年份:");
}
printf("请输入月份:");
while (scanf("%d", &month) != 1 || month < 1 || month > 12 || getchar() != '\n') {
printf("请输入正确的数字\n");
while (getchar() != '\n');
printf("请输入月份:");
}
printf("请输入日期:");
while (scanf("%d", &day) != 1 || day < 1 || day > getDaysInMonth(year, month) || getchar() != '\n') {
printf("请输入正确的数字\n");
while (getchar() != '\n');
printf("请输入日期:");
}
int weekday = getWeekday(year, month, day) + 1;
if (weekday != 7) {
printf("%d年%d月%d日是星期%d\n", year, month, day, weekday);
} else {
printf("%d年%d月%d日是星期日\n", year, month, day);
}
return 0;
}