一个简单的日期,两种代码逻辑一样的,为什么最终结果相差一。

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

小蓝每天都锻炼身体。

   正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。

如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

遇到的现象和发生背景,请写出第一个错误信息

为什么两种代码运行结果不一样。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
using namespace std;
int main()
{
    int year = 2000, month = 1, day = 1, weak = 6;
    int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int n = 2;
    for (int i = 1; i < 10000; ++i)
    {
        day++;       
        weak++;
        weak%=7;
        n++;
       

        if (day == days[month] + 1)
        {
          day = 1;
          month++;
           if (month == 13)
           {
            month = 1;
            year++;
             if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
              days[2] = 29;
              else
               days[2] = 28;
           }
        }
           if (weak == 1 || day == 1)
           n++;
           if (year == 2020 && month == 10 && day == 1)
           break;
    }
    cout << weak << endl;
    cout << n+2;
    return 0;
}

//2
#include 
using namespace std;
int main()
{
    int year = 2000, month = 1, day = 1, weak = 6;
    int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int n = 2;
    for (int i = 1; i<20000; ++i)
    {
        day++;       
        weak++;
        weak %= 7;
        n++;
        
        if (day==days[month]+1)
        {
            month++;
            day = 1;
        }
        if (month ==13)
        {
            year++;
            month = 1;
        }
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
            days[2] = 29;
        else 
            days[2] = 28;
            if (weak == 1 || day == 1)
            n++;
        if (year == 2020 && month == 10 && day == 1)
            break;
    }
    cout << n;
    return 0;
}
运行结果及详细报错内容

一个weak=4,n=8879,一个weak=3,n=8877;

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

尝试输出i值,第二种比第一种少了一次但是根据代码看不出问题在哪里。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

我认为两种代码逻辑是一样的,我想知道输出结果为什么不一样,如果有关于日期题目更好的解决方法欢迎回答。

你的代码逻辑有问题
第一段代码是在moth==13才计算闰月,所以第一年他没有计算,
第二段代码是每次循环都要计算闰月,所以正确