C语言 要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。

保密的测试用例错了麻烦帮忙看下错在哪里。。在线等!急!

#include<stdio.h>
int main()
{
int y,m,d,c,w,s;

scanf("%d %d %d",&y,&m,&d);

if((m>12)&&(d>31))
{ printf("month and day are wrong.\n");}//月份和天数

if(m>12&&d<=31)
{printf("month is wrong.\n");}//月份错了

if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d>31))//大月的天数错了
{printf("day is wrong.\n");}

if((m==4||m==6||m==9||m==11)&&(d>30))//小月的天数错了
{printf("day is wrong.\n");}

if(m==2)//二月
{ if (y%4==0&&y%100!=0||y%400==0) //闰年
{if (d>29)printf("day is wrong.\n");}
else {if(d>28) printf("day is wrong.\n");} //平年
}

c=y/100+1;

if(m<=2) {s=m+12;y=y-1;} //如果一月二月变成十三月十四月

w=(y+y/4+c/4-2*c+26*(s+1)/10+d)%7;

if(m>2)
{w=(y+y/4+c/4-2*c+26*(m+1)/10+d)%7;}

if((m<=12)&&(d<32))
printf("%d\n",w);
return 0;

}

if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d>31

这种应该是d!=31才对。小月也肯定是==30.
写程序要怎么想的就怎么写。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-23
o月份没写吧
相似回答