该函数的作用 检查给定的日期是否满足以下条件:
月份在1到12之间;
对于非二月份的日期,日期要符合该月份的天数;
对于二月份的日期,要根据是否是闰年来确定是否合法。
int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int date){
// 通过将日期除以10000,可以得到日期中的前四位数字,即年份部分。
int year = date / 10000;
// 如果日期是20240331,那么取模10000后,得到结果是0331,然后除以100得到的就是03,即提取出的月份部分
int month = date % 10000 /100;
int day = date % 100;
if(month == 0 || month > 12) return false;
if(day == 0 || month != 2 && day > days[month]) return false;
if(month == 2){
int leap = year % 100 && year % 4 == 0 || year % 400 == 0;
// 那么 leap 的值就是1(真)。否则, leap 的值就是0(假)。
if(day > 28 + leap) return false;
}
return true;
}
https://www.acwing.com/activity/content/code/content/8252231/