蓝桥杯跑步锻炼 C语言 将else代码段删除后结果不同

问题遇到的现象和发生背景

将11~13行的代码
else{
months[2]=28;
}
删除后,明明months[2]已经初始化28,为什么运行结果是8895
正确答案是8879

问题相关代码,请勿粘贴截图
#include<stdio.h>//依次判断年月日周 
int main(){
    int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//一年中的十二个月每个月的天数 
    int year,month,day;
    int ans=6;//一月一号是周六 
    int cnt=0;//公里数 
    for(year=2000;year<=2020;year++){//年 
        if(year%4==0&&year%100!=0||year%400==0){ 
            months[2]=29; //闰年
        }
        else{
            months[2]=28; //平年 
        }
    for(month=1;month<=12;month++){//几月 
        for(day=1;day<=months[month];day++){//几日 
            cnt++;//每天一千米 
            if(ans==8){
                ans=1;//ans增加到 8 时归回 1  
            } 
            if(ans==1||day==1){//或意味着A对,B对,AB同时对三种情况 
                cnt++;//周一或月初或周一与月初多跑一千米 
            }
            ans++;//进入第二天 
            if(year==2020&&month==10&&day==1){//到2020.10.1结束循环 
                printf("%d",cnt);
            } 
        }
    }
}
    return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

因为碰到闰年的时候二月份改为29天了,后面所有年份的二月份都变成29天了,所以else语句不能删除。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632