【蓝桥杯冲刺】日期类专题特训

目录

1. 日期累加

题目描述

输入

输出

代码

2. 日期差值

题目描述

输入

输出

代码

3. 打印日期

题目描述

输入

输出

代码

写在最后:


1. 日期累加

题目链接:日期累加

题目描述

输入

1
2008 2 3 100

输出

2008-05-13

代码

#include <iostream>
using namespace std;

//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};

//取当月日期
int get_mday(int year, int mon) {
    if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
    else return month[mon];
}

//具体实现
void plus_day(int& year, int& mon, int& day, int plus) {
    day += plus;
    while (day > get_mday(year, mon)) {
        int mday = get_mday(year, mon);
        if(day > mday) {
            day -= mday;
            mon++;
        }
        if(mon > 12) {
            mon -= 12;
            year++;
        }
    }
}

int main() 
{
    int n;
    cin >> n;
    while(n--) {
        int year, mon, day, plus;
        cin >> year >> mon >> day >> plus;
        //将日期加在一起
        plus_day(year, mon, day, plus);
        printf("%02d-%02d-%02d\n", year, mon, day);
    }
    return 0;
}

2. 日期差值

题目链接:日期差值

题目描述

输入

20110412
20110422

输出

11

代码

#include <iostream>
using namespace std;

//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};

//判断闰年
bool is_leap(int year) {
    if((year % 4 == 0 && year % 100) || year % 400 == 0) return true;
    else return false;
}

int main() 
{
    int n1, n2;
    while (cin >> n1 >> n2) {
        //保证之后的代码时小的日期减大的日期
        if(n1 > n2) swap(n1, n2);
        else if(n1 == n2) {
            cout << 2 <<endl; //题目要求连续日期算两天
            return 0;
        }

        //取出年月日
        int year1 = n1 / 10000, year2 = n2 / 10000;
        int mon1 = n1 / 100 % 100, mon2 = n2 / 100 % 100;
        int day1 = n1 % 100, day2 = n2 % 100;
        int ans = 0;

        //年份差了几天
        while(year1 != year2) {
            if(is_leap(year1)) ans += 366;
            else ans += 365;
            year1++;
        }

        //月份差了几天
        while(mon1 != mon2) {
            if(mon1 < mon2) {
                if(mon1 == 2 && is_leap(year1)) ans += month[mon1] + 1;
                else ans += month[mon1];
                mon1++;
            }
            else {
                if(mon1 == 2 && is_leap(year1)) ans -= month[mon1] + 1;
                else ans -= month[mon1];
            }
        }

        //日期差了几天
        if(day1 < day2) {
            ans += day2 - day1;
        }
        else {
            ans -= day1 - day2;
        }

        cout << ans + 1 << endl;
    }
    return 0;
}

3. 打印日期

题目链接:打印日期

题目描述

输入

2000 3
2000 31
2000 40
2000 60
2000 61
2001 60

输出

2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

代码

#include <iostream>
using namespace std;


//打表
int month[] = {0, 31, 28, 31, 30, 31, 30,31, 31, 30, 31, 30, 31};

//求当月日期
int get_mday(int year, int mon) {
    if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
    else return month[mon];
}

int main() 
{
    int year, day;
    while (cin >> year >> day) {
        int mon = 1;
        while (day > get_mday(year, mon)) {
            day -= get_mday(year, mon);
            mon++;
            if(mon > 12) {
                mon -= 12;
                year++;
            }
        }
        printf("%02d-%02d-%02d\n", year, mon, day);
    }
    return 0;
}

总结:

日期类的题目大同小异,

把日期类的基本思路练熟了,基本上是能够稳拿这一部分的分数的,

如果你的日期类还不熟练,赶快拿上面几道题练一练手吧!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6950.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Linux 中查找所有符号链接,这几个命令得会!

在Linux中&#xff0c;符号链接&#xff08;Symbolic Link&#xff09;是一种非常常见的文件类型&#xff0c;也称为软链接。符号链接是指向另一个文件的指针&#xff0c;而不是实际的数据。它允许用户创建一个指向另一个文件的虚拟文件&#xff0c;这样用户可以在不改变实际文…

JVM解析原理

目录1.JVM内存结构2.JIT及时编译器的原理&#xff0c;优化以及切换编译器类型2.1解释型语言和编译语言2.2JIT即时编译器&#xff08;Just In Time Compiler&#xff09;3.类的加载机制和类的加载器3.1类的加载机制3.2类的加载器4.双亲委派机制4.1定义4.2优点4.3总结5.虚拟机栈详…

读破万卷,神交古人,突破ChatGPT4096的Token限制,建立自己的垂直领域资料人工智能助理

ChatGPT的泛用性极高&#xff0c;上知天文&#xff0c;下通地理&#xff0c;参考古今&#xff0c;博稽中外&#xff0c;几乎无所不知&#xff0c;无所不晓。但如果涉及垂直领域的专业知识点&#xff0c;ChatGPT难免也会有语焉不详&#xff0c;闪烁其词的毛病&#xff0c;本次我…

16从零开始学Java之Java里的输入与输出语句有哪些?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在前面的文章中&#xff0c;学习了如何创建Java文件&#xff0c;也学习了Java里的标识符、运算符、进制等内容。有些…

iPhone手机小技巧:使用备忘录创建清单

手机备忘录是非常常用的软件之一&#xff0c;无论是iPhone手机还是安卓系统的手机都可以下载相应的APP进行使用。它可以帮助我们记录很多琐碎的事情&#xff0c;防止我们遗忘某事。 在记备忘录的时候&#xff0c;有的人是直接打字记录的&#xff0c;也没有什么具体的格式&…

Excel–如何区分大小写、精确匹配查找?

最近经常需要用到uuid来匹配数据&#xff0c;经常会遇到两个uuid 只是大小写的区别&#xff0c;数据库里使用是没问题的&#xff0c;因为mysql是可以区分大小写的&#xff0c;但是导出后通过excel处理数据匹配数据时就会出问题 如下图所示&#xff0c;通过vlookup匹配&#xf…

文心一言 VS chatgpt (3)-- 算法导论2.1

一、以图 2-2 为模型&#xff0c;说明INSERTION-SORT 在数组 A(31&#xff0c;41&#xff0c;59&#xff0c;26&#xff0c;41&#xff0c;58)上的执行过程。 文心一言&#xff1a; 以图 2-2 为模型&#xff0c;说明INSERTION-SORT 在数组 A(31&#xff0c;41&#xff0c;59&…

Java基础学习第二十四讲:Stream流

Stream流 一、什么是Stream流 Stream流操作是Java 8提供一个重要新特性&#xff0c;它允许开发人员以声明性方式处理集合&#xff0c;其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中&…

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试

ROS功能包|mav_control_rw&#xff08;基于MPC的无人机轨迹跟踪控制&#xff09;---gazebo仿真测试gazebo仿真测试gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaunch rotors_gazebo mav.launch mav_name:firefly启动 linear mpc 控制器 $ roslaunch mav_linear_mpc ma…

Win10安装MySql1.5.7

1&#xff09;、下载安装包 地址&#xff1a;MySQL :: Download MySQL Community Server 或者&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1iSLiUo8ehqP6tfxGJ2ewfA 提取码&#xff1a;ctbr 2&#xff09;、下载后解压到指定目录 我的是D:\Program Files\mysql-…

SCS【19】单细胞自动注释细胞类型 (Symphony)

单细胞生信分析教程桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a;Topic 6. 克隆进化之 CanopyTopic 7. 克隆进化之 CardelinoTopic 8. 克隆进化之 RobustCloneSCS【1】今天开启单细胞之旅&#xff0c;述说单…

一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 bz2 模块&#xff1a;处理压缩和解压缩文件, 资料整理笔记&#xff08;大全&#xff09;摘要模块图类关系图模块全展开【bz2】统计常量int模块4 io5 os6 warnings7 _compre…

数据结构与算法基础(王卓)(23):邻接表(链式存储结构)

顶点结点&#xff1a; //顶点的结点结构 typedef struct VNode {VertexType data; //顶点信息ArcNode* firstarc; //指向第一条依附该顶点的边的指针 }VNode, AdjList[MVNum]; //例如&#xff1a;VNode v[MVNum] 相当于 AdjList v 我觉得也可以改成这样写&#xff08;存疑&…

基于数字孪生智慧污水厂Web3D可视化管理系统

城市水环境不仅关系到国民生活的质量&#xff0c;还对我国社会发展有着深入的影响。城市污水处理厂的存在不仅能够提升生态环保工作发挥的效用&#xff0c;还能够向城市居民宣传生态环保的重要性&#xff0c;使得更多的市民认识到节约、环保的意义&#xff0c;能够从自身出发&a…

UVM学习笔记2——验证基础知识(验证计划、验证方法)

文章目录前言一、覆盖率二、验证计划1、验证计划模板2、验证计划评估三、验证方法1、动态仿真/dynamic simulation2、静态检查/formal check3、虚拟模型4、硬件加速/hardware acceleration5、效能验证6、性能验证四、验证分类1、验证工具2、验证复杂度/可见度/透明度3、验证的芯…

Java设计模式(一)单例模式

设计模式是对软件设计中普遍存在的各种问题&#xff0c;提出解决方案 设计模式包含了面向对象的精髓&#xff0c;懂了设计模式&#xff0c;你就懂了面向对象分析和设计的精要。 设计模式的七大原则 1.单一职责原则 2.接口隔离原则 3.依赖倒置原则 4.里氏替换原则 5.开闭原则o…

大数据项目实战之数据仓库:用户行为采集平台——第2章 项目需求及架构设计

第2章 项目需求及架构设计 2.1 项目需求分析 1&#xff09;采集平台 &#xff08;1&#xff09;用户行为数据采集平台搭建 &#xff08;2&#xff09;业务数据采集平台搭建 2&#xff09;离线需求 主题 子主题 指标 流量主题 各渠道流量统计 当日各渠道独立…

pdf压缩文件怎么压缩最小?办公常备软件

PDF文件的大小有时会让人感到困扰&#xff0c;特别是在网络上传输和存储方面。为了解决这个问题&#xff0c;我们需要将PDF文件压缩至最小。 在进行压缩之前&#xff0c;需要检查PDF文件的分辨率和图形质量。通过降低分辨率和图形质量&#xff0c;可以显著减小文件的大小。此外…

springCloud学习【6】之分布式搜索引擎(3)

文章目录前言一 数据聚合1.1 DSL实现聚合1.1.1 Bucket聚合语法1.1.2 聚合结果排序1.1.3 限定聚合范围1.2 Metric聚合语法1.3 小结1.4 RestAPI实现聚合1.5 API语法1.7 案例二 自动补全2.1 拼音分词器的安装2.2 自定义分词器2.3 自动补全查询2.4 自动补全查询的JavaAPI三 数据同步…
最新文章