问题遇到的现象和发生背景
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 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值,第二种比第一种少了一次但是根据代码看不出问题在哪里。
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
我认为两种代码逻辑是一样的,我想知道输出结果为什么不一样,如果有关于日期题目更好的解决方法欢迎回答。