输入格式:
输入两个整数,表示月和日。
输出格式:
合法日期输出YES,否则输出NO。
。
#include<stdio.h>
int main()
{
int m,r;
scanf("%d%d",&m,&r);
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
if(r<=31)
printf("YES");
else
printf("NO");
if(m==4||m==6||m==9||m==11)
if(r<=30)
printf("YES");
else
printf("NO");
if(m==2)
if(r<=28)
printf("YES");
else
printf("NO");
return 0;
}
这个错误警告,是scanf()函数的返回值没有处理,另对月份的判断没有,修改如下,供参考:
#include<stdio.h>
int main()
{
int m,r;
int ret = scanf("%d%d",&m,&r);
if (ret == 2){ //修改
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
if(r<=31 && r > 0)//修改
printf("YES");
else
printf("NO");
else if(m==4||m==6||m==9||m==11)//修改
if(r<=30 && r > 0)//修改
printf("YES");
else
printf("NO");
else if(m==2) //修改
if(r<=28 && r > 0) //修改
printf("YES");
else
printf("NO");
else //对月份的判断,< 1 , > 12
printf("NO");
}
else //修改
printf("Input error!");
return 0;
}
提供带闰年判断的,检查输入日期是否合法的写法,供参考:
#include<stdio.h>
int isLeap(int y)
{
return ((y%4==0 && y%100!=0)||(y%400==0));
}
int GetDaysOfMonth(int y, int m)
{
int daysOfMonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeap(y) && m == 2) return daysOfMonth[m-1]+1;
return daysOfMonth[m-1];
}
int main()
{
int month ,day,ret;
printf("请输入月日:(mm dd)");
ret = scanf("%d %d", &month, &day);
if (ret == 2){
if (month > 0 && month < 13 && day <= GetDaysOfMonth(2100,month) && day >= 1)
printf("YES");
else
printf("NO");
}
else
printf("Input error.");
return 0;
}