历年蓝桥杯 日期类问题总结

本文总结了历年蓝桥杯竞赛中的日期类问题,包括闰年判断、星期几计算以及不同日期格式的处理。提供了题解和解题思路,如通过Excel辅助计算和代码实现,强调了在比赛中此类问题的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

历年蓝桥杯 日期类问题总结

日期类问题 (历年蓝桥杯真题)

发现每年基本上都会有日期处理类的问题, 或者模拟,或者其他,所以就把历年所有日期问题都整理一下吧

输入
1998
输出
1998-2-13
1998-3-13
1998-11-13
题解:
  • 首先是闰年判断

bool isLeap(int year)
{
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
  • 其次是求指定日期是星期几 (当前日期到公元1年1月1日的天数 % 7 )

闰年时:((year-1)*365 + (year-1)/4 - year/100 + year/400 + b[i] + 1) % 7

平年时:((year-1)*365 + year / 4 -year/100 + year/400 + a[i] + 1) % 7

0:星期日 ,1:星期一,2:星期二,3:星期三,4:星期四,5:星期五,6:星期六

其中 a[i] 和 b[i] 指的是 该年1号 到 现在 的天数。这是因为我们知道公元1年1月1日是星期一

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
​
//闰年29天 
bool isLeap(int year)
{
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
​
int main()
{
    int year, ans = 0;
    //闰年的:每年一日到该月13日的天数 
    int Leap[] = {
       
       12, 31+12, 31+29+12, 31+29+31+12, 31+29+31+30+12, 31+29+31+30+31+12,
                  31+29+31+30+31+30+12, 31+29+31+30+31+30+31+12, 31+29+31+30+31+30+31+31+12, 
                  31+29+31+30+31+30+31+31+30+12, 31+29+31+30+31+30+31+31+30+31+12, 31+29+31+30+31+30+31+31+30+31+30+12 };
    //平年的:每年一日到该月13日的天数 
    int not_Leap[] = {
       
       12, 31+12, 31+28+12, 31+28+31+12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值