供参考:
#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 year ,month ,day, ret;
//printf("请输入年月日:");
ret = scanf("%d %d %d", &year, &month, &day);
if (ret == 3){
if (year > 0 && month > 0 && month < 13 &&
day <= GetDaysOfMonth(year,month) && day >= 1)
printf("YES");
else
printf("NO");
}
else
printf("Input error.");
return 0;
}
判断年是否为闰年,然后判断2月份的天数是否合适。
#include <stdio.h>
int main()
{
int y ,m,d,yes = 0;
scanf("%d%d%d",&y,&m,&d);
if(y<=0 || m>12 || m< 1||d>31 || d<1)
{
printf("no");
return 0;
}
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(d<=31)
{
yes = 1;
break;
}
break;
case 4:
case 6:
case 9:
case 11:
if(d<=30)
{
yes = 1;
break;
}
break;
case 2:
{
if((y%4!=0)||(y%100==0&&y%400!=0))
{
if(d<=28)
{
yes = 1;
break;
}
}
else if(d<=29)
{
yes = 1;
break;
}
break;
}
if(yes == 1)
printf("yes");
else
printf("no");
return 0;
}