随机给你一个格式为-连接了年、月、日的日期字符串(其中的数字都是没有前导零的,也就是说7不会被写成07)。你将需要判断这个日期在我们的公历体系内是否真实存在。如果存在则输出YES,否则输出NO。
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
int main()
{
int year, mon, day;
//输入年月日
scanf("%d-%d-%d", &year, &mon, &day);
//如果年份在1-3000,月份在1,3-12之间
if ( (mon <= 12 && mon > 2 || mon==1 ) && year > 0 && year <= 3000){
//如果在有31号的月份
if (mon == 1 || mon == 3 || mon == 5 || mon== 7 || mon == 8 || mon == 10 || mon == 12){
if (day <= 31 && day > 0)
printf("YES");
else
printf("NO");
}
//在只有30号的月份
else if(mon == 4 || mon == 6 || mon == 9 || mon == 11){
if (0 < day && day <= 30)
printf("YES");
else
printf("NO");
}
}
//如果为二月
else if (mon == 2) {
//判断如果是闰年
if ((year % 100 != 0 && year % 4 == 0) || year % 400 == 0) {
if (0 < day && day <= 29)
printf("YES");
else
printf("NO");
}
else {
if (0 < day && day <= 28)
printf("YES");
else
printf("NO");
}
}
else {
printf("NO");
}
}