.
#include<stdio.h>
#define DAYS_PER_WEEK 7
#define MONTHS 12
//判断是不是闰年
int is_leap_year(int year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
//返回这个月一共有多少天
int days_of_month(int year, int month) {
//存储平年每月的天数
const int month_days[MONTHS] = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 };
if (2 == month && is_leap_year(year))
return 29; // 如果是闰年2月,返回29天
else
return month_days[month - 1]; //正常返回
}
//返回这一天在当年是第几天
int days_of_year(int year, int month, int day) {
int i;
int days = 0;
for (i = 1; i < month; i++) {
days += days_of_month(year, i);
}
return days + day;
}
int get_days(int year, int month, int day) {
int days = days_of_year(year, month, day);
int temp = year - 1;
return temp * 365 + temp / 4 - temp / 100 + temp / 400 + days;
}
int day_of_week(int year, int month, int day) {
return get_days(year, month, day) % DAYS_PER_WEEK;
}
int main() {
printf("%d\n",day_of_week(2023,10,23));
return 0;
}