C++编写万年历的问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 15:32:29
已知2005年的10月20日是星期四,以此编写万年历,输出任意年份的日历。
怎么由已知推出任意年的元旦是星期几??
如题,请不要随便复制粘贴别的什么代码,我要的是思路。

这个程序我编写过,如果按照实际的日历来算,跟本不需要知道这些信息比如:05年的10月20日是星期四,仅仅只需要知道今天或者任何一天是星期几就可以了。
我是这样做的,由今天是星期几算出公元0年1月1日是星期几,然后程序输入任意年份,定义int days = inputyear*365+intputmonth*(用switch判断一下),用days % 7 算出当前月份第一天是星期几,就可以输出任意年份,任意月份的日历。
具体细节你自己去调试吧

1)输入年份,处理该年份的各月天数(闰年处理)。
2)根据已知日期,就算当前年份第一天距已知日期是多少天,从而计算第一天是周几。
3)根据1)得到的数据,每个月份输出日期就可以了。

大概思路就这样了。
前两步应该没什么问题。
第3步处理比较复杂,要细心。

最简单的方法,直接套计算式

Kim Skak Larsen 计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

d表示日期中的日数,m表示月份数,y表示年数。

把一月和二月看成是上一年的十三月和十四月