3。每 4 年(3 个平年+1 个闰年)共 208 周+5 天 ——注意
这个“5 天”
每百年共 100*(208 周+5 天)-1 天=5217 周+5 天 ——注意这
个“5 天”(整百年暂设为平年)
每 400 年共 4*(5217 周+5 天)+1 天(整 400 年闰)=20871 周+0 天——注意
这个“0 天”和“1 天”(4 个整百年只有一个闰年) 即 400 年一轮回!(原来
万年历 400 年前是一家)
【二】根据万年历以上特点进行编写:
(1)首先对万年历年、月、日进行编写,编写程序先定义每月的天数为 28 天,
如月份为 1、3、5、7、8、10、12 就定义天数为 31 天反之如果月份为 4、6、
9、11 就输出天数为 30 天,由上可见 2 月份为 28 天但是如果为闰年就有 29
天就要定义一个数组存放天数,用 while 循环控制。
(2)再对其中的星期进行编写:由于公元 1 月 1 日设为星期六,故 3 月 1 日
为星期三,可以用万年 3 月 1 日星期算法(特别是那个三)
其公式为:
某年 3 月 1 日星期几=(3 天+百年%4*5 天+年/4*5 天+年%4+月星期表+日-1 天)%7
某年 3 月 1 日星期几=(百年%4*5 天+年/4*5 天+年%4+月星期表+日+2 天)%7
或某年 3 月 1 日星期几=(百年%4*5 天+年+年/4+月星期表+日+2 天)%7
其中,闰 4 百年 3 月 1 日星期算法(百年%4=0)
其公式为:
某年 3 月 1 日星期几=(年+年/4+月星期表+日+2 天)%7
例:
1600 年 3 月 1 日星期几=(0+0/4+0+1+2)%7=3%7=星期三
2000 年 3 月 1 日星期几=(0+0/4+0+1+2)%7=3%7=星期三
2001 年 3 月 1 日星期几=(1+1/4+0+1+2)%7=4%7=星期四
2004 年 3 月 1 日星期几=(4+4/4+0+1+2)%7=8%7=星期一
2008 年 3 月 1 日星期几=(8+8/4+0+1+2)%7=13%7=星期六
2042 年 3 月 1 日星期几=(42+42/4+0+1+2)%7=55%7=星期六
其中,平 4 百年 3 月 1 日星期算法(百年%4<>0)
其公式为:
某年 3 月 1 日星期几=(百年%4*5 天+年+年/4+月星期表+日+2 天)%7
例:1700 年 3 月 1 日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:
1700 年是平年)
1800 年 3 月 1 日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:
1800 年是平年)
1900 年 3 月 1 日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:
1900 年是平年)
1999 年 3 月 1 日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=
星期一
2100 年 3 月 1 日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一
(注意:2100 年是平年)
2101 年 3 月 1 日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二
2102 年 3 月 1 日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三
2103 年 3 月 1 日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四
评论1
最新资源