给你一个年月日,如果要计算那天是星期几了话,我们就可以直接使用基姆拉尔森公式,但是,当月份为1月或者2月时,要让m加上12,同时年份减1,就是当成上一年的13月和14月来算。
if(m==1||m==2)
{
m+=12;
y--;
}
x=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
全部代码如下:利用此公式求出的余数x,如果x=0,则答案为星期一;x=1,则答案为星期二; x=2,则答案为星期三; x=3,则答案为星期四; x=4,则答案为星期五; x=5,则答案为星期六; x=6,则答案为星期日;。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int y,m,d,x;
scanf("%d-%d-%d",&y,&m,&d);
if(m==1||m==2)
{
m+=12;
y--;
}
x=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(x)
{
case 0:
cout<<"Monday"<<endl;
break;
case 1:
cout<<"Tuesday"<<endl;
break;
case 2:
cout<<"Wednesday"<<endl;
break;
case 3:
cout<<"Thursday"<<endl;
break;
case 4:
cout<<"Friday"<<endl;
break;
case 5:
cout<<"Saturday"<<endl;
break;
case 6:
cout<<"Sunday"<<endl;
break;
}
return 0;
}