假设星期为w,年份为y,月份为m,日期为d,则有
w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7
然后把计算出来的w加上1就是真正的星期几了
注意每年的1、2月份要当成上一年的13、14月份计算 ,上述的除法均为整数
#include<iostream>
#include<cmath>
using namespace std;
int isyear(int x)
{
if(x%400==0||(x%4==0&&x%100!=0))
return 1;
return 0;
}
int main()
{
int y,m,d;
while(scanf("%4d%2d%2d",&y,&m,&d)!=EOF)
{
if(m==1||m==2)
{
m+=12;
y-=1;
}
int k=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
cout<<k<<endl;
}
return 0;
}