/**
蔡勒公式
输入:year:取年份后2位,比如2021取21
输出结果:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
**/
int getDayOfWeek(int year, int month, int day)
{
int c, y, week;
if (month == 1 || month == 2) //判断month是否为1或2
{
year--;
month += 12;
}
c = year / 100;
y = year - c * 100;
week = (c / 4) - 2 * c + (y + y / 4) + (13 * (month + 1) / 5) + day - 1;
while (week < 0)
{
week += 7;
}
week %= 7;
return week;
}
void main(void)
{
int year = 0, month = 0, day = 0, week = 0;
while (1)
{
scanf("%d%d%d", &year, &month, &day);
printf("current input data:\r\n20%d-%d-%d\r\n", year, month, day);
week = getDayOfWeek(year, month, day);
printf("week: %d", week);
}
}
使用如下图: