#include <iostream>
using namespace std;
bool isLeap(int y)//判断该年是否是闰年。
{
return (y%4==0&&y%100!=0)||(y%400==0);//默认初始化为false
}
bool check(int year,int month,int day)//判断是否为合法日期
{
if(month>12||month==0) return false;//保证月份在[1,12]
if(day>31 ||day==0) return false;//保证日子在[1,31]
if(month==2)//对2月份单独来特判
{
if( isLeap(year)&&day>29) return false;//如果不是闰年2月有29天
if(!isLeap(year)&&day>28) return false;//如果是闰年2月只有28天
}
if(month==4||month==6||month==9||month==11)//4,6,9,11月是小月份只有30天
{
if(day>30||day==0) return false;//保证日子在[1,30]
}
return true;
}
int main()
{
int n;
cin>>n;
int year,month,day;
year=n/10000;//取这个数的前四位表示年份
month=(n%10000)/100;//取这个数的第5和第6位表示月份
day=n%100;//取这个数的最后两位表示日子
if(check(year,month,day))cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}
32.判断日期的合法性(对于8位数的判断)
于 2022-04-01 14:08:44 首次发布