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