判断日期是否正确的模板
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //记录下每个月的天数,注意开头要加个0
bool check(int data)
{
int year=data/10000,month=data/100%100,day=data%100;//提取出年月日
if(month>12||day==0||month==0) return false;
if(month!=2&&day>days[month]) return false;
if(month==2) //对2月单独进行判断
{
int leap=year%100&&year%4==0||year%400==0;
if(day>days[month]+leap) return false;
}
return true;
}
对于日期的枚举可直接枚举全部的日期,然后判断其合不合法
例如回文日期
直接枚举所有的回文日期,然后判断是否合法
回文日期
像日期问题可直接从日期开头枚举到结尾
日期问题
另外日期问题经常限制输出
例如:
这时候只需要
printf("%d-%02d-%02d\n",year,month,day);
%02d的含义是输出占两格,不够前面补0