判断日期是否合法,然后计算日期是星期几
再次给出任意一个年月日(年>1900),现在我们不能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。输入:
年 月 日
输出:
0~6。
星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。
以下是我写的代码,但是却有一个用例显示错误,啊,有点崩溃啊,大神帮帮我。[code]#include<stdio.h>
int main()
{
int y,m,d,W,n=0,s=1;
scanf("%d%d%d",&y,&m,&d);
if (y<=1900)
{
printf("year is error.\n");
s=0;
}
else{
switch(m)
{
case 1:n=31;break;
case 2:n=28;break;
case 3:n=31;break;
case 4:n=30;break;
case 5:n=31;break;
case 6:n=30;break;
case 7:n=31;break;
case 8:n=31;break;
case 9:n=30;break;
case 10:n=31;break;
case 11:n=30;break;
case 12:n=31;break;
default:{printf("month is error.\n");
s=0;}
}
if(m=2)
if((y%4==0&&y%100!=0)||(y%400==0))
n=29;
if(s==1&&d>n)
{
printf("day is error.\n");
s=0;
}}
if(s==1){ if(m==1||m==2) {
m+=12;
y--;
}
W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
W+=7;
W%=7;
printf("%d\n",W);
return 0;
}}[code]