m0_65699050 2023-02-21 15:16 采纳率: 80%
浏览 26
已结题

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

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

小蓝每天都锻炼身体。

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

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

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

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

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include <iostream>
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 <iostream>
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值,第二种比第一种少了一次但是根据代码看不出问题在哪里。

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

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

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2023-02-21 16:49
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月1日
  • 已采纳回答 2月21日
  • 创建了问题 2月21日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么