蓝桥杯跑步锻炼问题:
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
我写了一个程序,逻辑上我看不出错误,但是运行结果跟预想的不同
预想结果应该是8879,而实际得到8949。问题出在哪里?
#include <iostream>
using namespace std;
bool isrun(int year)//判断是否为闰年
{
if((year%4==0 && year%100!=0) || year%400==0)
return true;
else
return false;
}
int main()
{
// 请在此输入您的代码
int runKM=0,run[]={31,29,31,30,31,30,31,31,30,31,30,31},ping[]={31,28,31,30,31,30,31,31,30,31,30,31};
int year=2000,month=0,day=0,week=3;//周一到周日,为0~6
for(year=2000;year<=2020;year++)//从2000年到2020年,遍历每一天
for(month=0;month<12;month++)
{
if(isrun(year))
{
for(day=1;day<=run[month];day++)
{
if(week==0 || day==1)//如果是月初或周一,跑2KM
runKM+=2;
else
runKM++;//其他时间跑1KM
week++;
while(week==7) week=0;
if(year==2020 && month==9 && day==1) break;
}
}
else
{
for(day=1;day<=ping[month];day++)
{
if(week==0 || day==1)
runKM+=2;
else
runKM++;
week++;
while(week==7) week=0;
if(year==2020 && month==9 && day==1) break;
}
}
}
cout<<runKM;
return 0;
}