基姆拉尔森计算公式
公式如下:
W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400+1)%7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int y,m,d,w;
while(scanf("%4d%2d%2d",&y,&m,&d)!=EOF) {
if (m==01 || m==02) {
m=(m==01?13:14);
y=y-1;//此处表示把1,2月计算到上一年的13,14月
}
w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
printf("%d\n",w);
}
return 0;
}