【蓝桥杯】 C++ 跑步锻炼

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝每天都锻炼身体。

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

小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?

实现代码

//#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{
    int days_month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    // count 总数
    // year 年份
    // month 月份
    // day 某月的几号
    // week 是星期几
    int count=0,year=2000,month=1,day=1,week=6;

    for (;year<=2020;year++)
    {
        // 闰年修改 2 月份
        if(year%400==0 || (year%4==0 && year%100!=0))
        {
            days_month[2]=29;
        }
        else
        {
            // 这句 else 必须加,否则当 2000 年修改闰月以后,2001 年还是会按照 2 月有 29 天来计算。
            days_month[2]=28;
        }

        for(month=1;month<=12;month++)
        {
            // 到最后一天就退出
            if (year==2020 && month==10)
            {
                count=count+2;
                break;
            }

            // 1 号 、2 号…… 判断月首和周一。
            // 对 count 操作
            for(day=1;day<=days_month[month];day++)
            {
                //cout<<i<<" 日"<<endl;
                // 周一、月首跑两公里
                if(day==1||week==1 /*||(i==1&&week==1)*/)
                {
                    count=count+2;
                }
                else
                {
                    count=count+1;
                }
                // week 循环,从 0 到 6 ,0 代表周日
                 week=(week+1)%7;
            }
        }

    }
    cout<<count<<endl;

    
}

注意点

每次碰到年月日这种题都很怕,老是不敢上手做。希望以后能有改进。

首先注意闰年,对年份要进行判断,而且注意判断逻辑。对于ifelse语句,以后要注意写全。这道题就是因为缺了 else 一段,导致答案计算错误的。

        // 闰年修改 2 月份
        if(year%400==0 || (year%4==0 && year%100!=0))
        {
            days_month[2]=29;
        }
        else
        {
            // 这句 else 必须加,否则当 2000 年修改闰月以后,2001 年还是会按照 2 月有 29 天来计算。
            days_month[2]=28;
        }

其次注意截止时间是2020年10月1日(含),在循环里要有 break 。

知识点

  • 周的循环:所有需要约束周的都可以这样写。
                // week 循环,从 0 到 6 ,0 代表周日
                 week=(week+1)%7;
  • 月份数组需要根据闰年平年进行修改。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值