而且最开始改成if month <= 0,输入月份为0的时候也非法。
应该是if i==2,而不是if month==2
i才是每次遍历时候的月份下标,而month只要大于等于三月,都会经历二月份。
if(i==2&&((year%4==0&&year%100!=0)||year%400==0)) // 判断i==2 而不是month==2
另外从输入的合法性校验来说,还要判断年份,日期的范围,包括闰年平年2月日期都是不一样的,
请看:https://blog.csdn.net/qq_41071068/article/details/89484432
你判断错误时间再加个year和day就完美了