任意给出一个年月日,求出是星期几。

输入:

年 月 日

输出:

0~6

星期日用 0 表示,星期一用 1 表示,星期二用 2 表示……星期六用 6 表示。

这里采用基姆拉尔森计算公式:

w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7

在公式中d表示日期中的日数,m表示月份数,y表示年数,%表示取余。

w表示星期,w的取值范围是0~6,0代表星期日,1~6星期一到星期六。

注:当输入1月和2月时,需要当作前一年的13月和14月。

#includeint main(){int y,m,d;int w;scanf("%d%d%d",&y,&m,&d);if(m==1||m==2){m=m+12;y=y-1;w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;printf("%d\n",w);}else if(m==3||m==4||m==5||m==6||m==7||m==8||m==9||m==10||m==11||m==12){w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;printf("%d\n",w);}return 0;}

运行结果测试

初学请谅解,大家多提建议。