给你一个年月日,如果要计算那天是星期几了话,我们就可以直接使用基姆拉尔森公式,但是,当月份为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;
}