用C语言编程如何解决这里的日期星期的计算的问题啊

Problem Description
Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?

Input
There are multiply cases.
One line is one case.
There are three integers, year(0<year<10000), month(0<=month<13), day(0<=day<32).

Output
Output one line.
if the date is illegal, you should output "illegal". Or, you should output what day it is.

Sample Input
2007 11 17

Sample Output
Saturday

你给我点了一个首踩, 你是有多不满?
人生第一次回答, 居然被你点踩。

你无非就想要解题答案与思路,而我给出的这个链接是包含了你这题目的解。

给我的差评不知道是你有心还是无意,罢了。
现在我就猜测你给我差评是因为看不懂公式。

在说公式前,先给你看一种最一目了然的实现方式。
解题思路1. 计算从公元0年1月1日到输入的目标数总共有多少天 % 7

设用户输入的是2019-3-29

公元0年1月1日是周日, 固0是星期日
固 % 7 == 0就是星期天
1-6就是对应的星期一至星期六

平年表{m1:31,m2:28,m3:31,m4:30,m5:31,m6:30,m7:31,m8:31,m9:30,m10:31,m11:30}
闰年表{m1:31,m2:29,m3:31,m4:30,m5:31,m6:30,m7:31,m8:31,m9:30,m10:31,m11:30}
Y = 输入年份 - 1
M = 输入月份 - 1
D = 输入日期
O = 闰年总数
W = 星期几

W = [Y * 365 + M + D + O] % 7
W = [(Y * 365) + (m1 + m2) + D + (Y/4-Y/100+Y/400)] % 7
W = (2018 * 365 + (31 + 28) + 29 + 489) % 7
W = 5(星期五)

解题思路2. 抵消优化汇总误差方式

接着解题思路技巧:
1. 假设只有平年没有闰年,365%7=1,误差1. 亦从公年0年到输入年份应存在存在这么多误差. 例如2019 * (365%7) = 2019,固年份就是误差1
2. 获取当前年份的1月1日是星期几,需要加上闰年误差 + 误差1(年份)
3. 假设每个月28天, 绘制一个误差表E{3,0,3,2,3,2,3,3,2,3,2}
4. 误差汇总 % 7

Y = 误差年份(误差1)
O = 闰年误差(闰年总数)
D = 日期误差(输入日期 - 1)
E[M] = 月份误差(输入月份 - 1 之和)
W = (Y + O + D + E[M]) % 7
W = (2019 + 489 + 28 + 3) % 7
W = 5(星期五)

基姆拉尔森公式了,也是用了以上的思路,不过还进行了一下优化。
把误差表的规律找到了进行优化,以上思路应该可以帮助你看链接了。

基姆拉尔森公式:
Y = 输入年份
M = 输入月份
D = 输入日期

W = (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400+1) % 7
W = (29 +6 + 12/5 + 2019 + 489 + 1) % 7
W = 5(星期五)

扩展自行推论验证吧
蔡勒公式:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1

参考引用.
https://www.cnblogs.com/fengbohello/p/3264300.html
https://blog.csdn.net/COIaj4/article/details/83042486

一时半会写不出来,给你提供一个思路:1、国外的节日一般是第几个月的第几个星期天 2、年初到节日的日数基本是固定的
这个题我的想法是用节日和输入的时间的日期差确定它是星期几