【蓝桥杯C++练习】每日一练11-编程题

闰年分为普通闰年和世纪闰年。
普通闰年:公历年份是 4 的倍数,且不是 100 的倍数,为普通闰年。(如
2004 年就是普通闰年)。
世纪闰年:公历年份是整百数的,必须是 400 的倍数才是世纪闰年(如 1900 年不是世纪闰年,2000 年是世纪闰年)。
所以有人将此规则总结为:四年一闰,百年不闰,四百年再闰。
闰年的一年为 366 天,闰年的二月份为 29 天。平年一年为 365 天,平年的二
月为 28 天。
每年的 1、3、5、7、8、10、12 月份为 31 天,4、6、9、11 月份为 30 天。
【编程实现】
算天数。
用户输入未来的某一天,输入格式为如 2021 6 1,编程计算这一天和今天相差多少天?(例如:今天和明天是相差一天)星期几?(注意:输出格式为星期的数字值并在其前加“*”)。
【样例输入】
2021 6 1
【样例输出】
183
*2 

//【参考答案】
#include <iostream>
using namespace std;

bool isLeap(int y){
    return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
}

int main(){
    const int Y = 2021, M = 1, D = 14, W = 4; // 今日日期
    int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    days[2] = 28 + (int)isLeap(Y);
    int y, m, d;
    cin >> y >> m >> d;
    int i = Y, j = M, k = D, w = W, cnt = 0;

    while (!(i == y && j == m && k == d)){
        cnt++;
        w++;
        if (w > 7){
            w = 1;
        }
        k++;
        if (k > days[j]){
            k = 1;
            j++;
            if (j > 12){
                j = 1;
                i++;
                days[2] = 28 + (int)isLeap(i);
            }
        }
    }
    cout << cnt << endl
    << '*' << w << endl;

    return 0;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_Khalid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值