C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)

文章目录

  • 1.计算日期到天数转换
    • 题目详情
    • 代码
    • 思路
  • 2.KY111 日期差值
    • 题目详情
    • 代码
    • 思路
  • 3.KY222 打印日期
    • 题目详情
    • 代码
  • 4.KY258 日期累加
    • 题目详情
    • 代码
    • 思路

1.计算日期到天数转换

传送门

题目详情

在这里插入图片描述

代码

#include <iostream>
using namespace std;
int GetDay(int year,int month)
{
    int DayOfMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(month==2&&(year%400==0||(year % 4 == 0 && year % 100 )) )
    {
        return 29;
    }
    return DayOfMonth[month];
}

int main() {
    int year;
    int month;
    int day;
    cin>>year>>month>>day;
    int sum=0;
    for(int i=1;i<month;i++)
    {
        sum+=GetDay(year, i);
    }
    cout<<sum+day;
}

思路

首先我们知道肯定是用一个数组来储存每个月的天数,更加方便。同时默认2月是28天,如果是闰年就是29。
总体的计算思路是:1月到month-1月的所有天数,加上month月的day。使用for循环能正好契合这个思路
当然这题的思路和解法非常多,我这也只是其中一个。

2.KY111 日期差值

传送门

题目详情

在这里插入图片描述

代码

int GetDay(int year, int month) {//返回一年中哪一个月的天数
    int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (month == 2 && (year % 400 == 0 || (year % 4 == 0 && year % 100 )) ) {
        return 29;
    }
    return DayOfMonth[month];
}

int Sum(int a, int b) {
    int max = b;
    int min = a;
    int flag = 1;
    if (a > b) {
        flag = -1;
        max = a;
        min = b;
    }
    int day1 = min % 100;
    int month1 = (min / 100) % 100;
    int year1 = min / 10000;
    int day2 = max % 100;
    int month2 = (max / 100) % 100;
    int year2 = max / 10000;

    int count = 1;
    while ((year1 < year2) || (month1 < month2) || (day1 < day2)) {
        day1++;
        if (day1 > GetDay(year1, month1)) { //如果满了当月天数
            month1++;//跳到下一个月,天数变为1号
            day1 = 1;
        }
        if (month1 == 13) { //如果满了当年月数
            year1++;//跳到下一年,月数变为1月
            month1 = 1;
        }
        count++;
    }
    return flag * count;
}

int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << Sum(a, b) << endl;
    }
    return 0;
}
}

思路

  1. 首先我们要处理连续输入,之前是使用while(scanf(…)!=EOF)
  • 现在也可以,但毕竟是c++。可以用while(cin<<…)
    因为:例如上面,当使用 while(cin >> a >> b) 时,如果输入操作成功(即用户输入了两个整数),cin 的布尔值为 true,循环会继续执行。如果输入操作失败(例如遇到文件结束符。在 Windows 中是 Ctrl+Z,Linux/macOS 中是 Ctrl+D。这样程序会结束循环并终止执行),cin 的布尔值为 false,循环会终止
  1. 思路是找到二者中较小的,再进行拆分。根据只要二者不相等,day1(较小的)就++;天数满了,月满了再进行处理。每一次count++。

3.KY222 打印日期

传送门

题目详情

在这里插入图片描述

代码

#include <iostream>
using namespace std;

int main() {
    int year, sum_day;
    while (cin >> year >> sum_day) {
        // 注意 while 处理多个 case
        int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 )) 
        {
            DayOfMonth[2]++;
        }
        int month=1;
        while(sum_day>DayOfMonth[month])
        {
            sum_day-=DayOfMonth[month];
            ++month;
            if(sum_day==DayOfMonth[month])
            {
                ++month;
                sum_day=1;
                break;
            }
        }
        printf("%d-%02d-%02d",year,month,sum_day);
    }
}

4.KY258 日期累加

传送门

题目详情

在这里插入图片描述

代码

#include <cfloat>
#include <iostream>
using namespace std;
int GetDay(int year, int month) //返回一年中哪一个月的天数
{
    int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (month == 2 && (year % 400 == 0 || (year % 4 == 0 && year % 100 )) ) 
    {
        return 29;
    }
    return DayOfMonth[month];
}
    int main() 
    {
        int num;
        cin>>num;
        while (num--) 
        {
            int year, month, day,add_day;
            cin >> year >> month >> day>>add_day;
            while(add_day--)
            {
                ++day;
                if (day > GetDay(year, month))
                {
                    ++month;
                    day=1;
                }
              if(month==13)
               {
                  year++;
                 month=1;
               } 
             }
            printf("%d-%02d-%02d\n",year,month,day);
        }
        return 0;
    }

思路

这题大家要注意题目的输入和输出要求,我自己在这上面浪费了好多多少。


今天就到这里啦!

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

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

相关文章

面试题16.15.珠玑妙算

前言 这两天突然发现力扣上还是有我能写出来的题的&#xff0c;虽说都是简单级别的&#xff08;以及一道中等的题&#xff09;&#xff0c;但是能写出来力扣真的太开心了&#xff0c;&#xff08;大佬把我这段话当个玩笑就行了&#xff09;&#xff0c;于是乎&#xff0c;我觉…

【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解

本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 目录 1.基本数据类型2.sizeof关键字 前言&#xff1a; 本期我们继续探讨关于C深度解剖这本书相关内容&#…

创业前先把刘强东这两句琢磨明白!不然大概率失败!2024最适合创业的行业!2024年普通人的创业机会在哪里

第一句&#xff0c;真正解决一个问题。 这句话表达了&#xff0c;你的项目一定是要建立在解决具体的问题上&#xff0c;而不是你觉得自己有个好点子&#xff0c;或者好产品就可以了。因为即使你的产品很好&#xff0c;服务很好&#xff0c;如果不能切实的解决某个问题&#xf…

使用pycharm连接读取orcl数据库的表

背景&#xff1a;工作需要 需求&#xff1a;使用pycharm访问远程oracle类型数据库的表&#xff0c;表中包含lob字段&#xff08;这也是个坑&#xff01;&#xff09; 麻了&#xff0c;搞了一个星期&#xff0c;终于成功了&#xff0c;真可谓是每步都有坑&#xff0c;看的文章也…

每日OJ题_算法_滑动窗口⑤_力扣904水果成篮

目录 力扣904. 水果成篮 解析及代码1&#xff08;使用容器&#xff09; 解析及代码2&#xff08;开数组&#xff09; 力扣904. 水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这…

禅道:从安装到使用,一篇文章带你全面了解

博客前言&#xff1a; 在这个充满竞争和快节奏的世界里&#xff0c;项目管理已经成为了许多行业的关键环节。禅道作为一种功能强大、易用的项目管理工具&#xff0c;正在被越来越多的企业和团队所采用。它不仅能帮助我们高效地管理项目&#xff0c;还能提升团队协作和沟通的效…

竞赛保研 大数据房价预测分析与可视

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据房价预测分析与可视 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适合…

2023我的总结:读书、写作、运动、爱家人、学一门手艺

不知不觉中&#xff0c;2024年1月已过去大半了&#xff0c;按照惯例&#xff0c;还是对过去一年的所思所行做个简单的汇报。也希望我的一些经历&#xff0c;能给到正在做年终总结或新年规划的朋友&#xff0c;一些参考。 01 读书&#xff0c;是门槛最低的高贵 最近一段时间&am…

Jmeter对接口测试入参实现MD5加密

一、自带函数助手MD5加密 在函数助手中找到__MD5这个函数&#xff0c;第一个参数是要md5加密的值&#xff0c;第二个参数是保存加密后值的变量 在请求参数中引用该函数 发送请求可以看到密码加密了 二、beanshell脚本md5加密 在jmeter的lib目录下&#xff0c;自带commons-cod…

傲空间私有部署 Linux 指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。Install Docker Engine on Ubu…

基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)

基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比&#xff08;Matlab&#xff09; 工程下载&#xff1a; HFSS的微带线特性阻抗仿真工程文件&#xff08;注意版本&#xff1a;HFSS2023R2&#xff09;&#xff1a; https://download.csdn.net/download/weixin_445…

定向减免!函数计算让 ETL 数据加工更简单

业内较为常见的高频短时 ETL 数据加工场景&#xff0c;即频率高时延短&#xff0c;一般费用大头均在函数调用次数上&#xff0c;推荐方案一般为攒批处理&#xff0c;高额的计算成本往往令用户感到头疼&#xff0c;函数计算推出定向减免方案&#xff0c;让 ETL数据加工更简单、更…

centos7安装nginx,按图文步骤操作

下载nginx&#xff1a; 官方网站&#xff1a;http://nginx.org/ 我这使用的版本是1.8.0版本。 1.nginx要求的安装环境 1.1、需要安装gcc的环境。 yum install gcc-c 1.2、第三方的开发包。 pcre PCRE(Perl Compatible Regular Expressions)是一个Perl库&#xff0c;包括…

Autosar信息安全入门系列01-SecOC基础介绍

本文框架 1. 概述2. SecOC基本概念2.1 SecOC是什么&#xff1f;2.2 新鲜度值与MAC值2.3 SecOC报文格式 3. SecOC报文发送及接收逻辑3.1 SecOC报文的发送3.2 SecOC报文的接收 1. 概述 本文为Autosar通信入门系列介绍&#xff0c;如您对AutosarMCAL配置&#xff0c;通信&#xf…

ChatGPT提示词保姆级教程

现在越来越多提示词教程&#xff0c;本文列个清单&#xff0c;方便以后整理&#xff0c;不定期更新&#xff0c;欢迎关注留言&#xff01; 后续更新欢迎关注 提示词&#xff08;prompt&#xff09;出来后&#xff0c;被称为一个新的岗位诞生&#xff0c;面向提示词工程师。 …

Mysql 索引 、事务、隔离级别

目录 索引&#xff08;index&#xff09; 1.为什么要有索引&#xff1f; 2.引入索引的代价 3.索引的操作 4.索引的使用场景 5.索引的底层原理 事务 (transaction) 事物的回滚是怎么做到的 事物的四大特性 并发执行事务带来的问题 隔离级别 索引&#xff08;index&…

OpenSource - 工具管理器easy-manager-tool

文章目录 功能说明运行配置环境配置启动docker部署 项目安全UI展示 Easy-Manager-Tool 打造软件行业首款集成工具&#xff0c;不管你是程序员&#xff0c;测试&#xff0c;运维等都可以使用该软件来提升自己的工作效率。 Easy-Manager-Tool 的诞生是为了解决软件行业众多参与者…

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter 0. 背景1. 安装 docker-ce2. 安装 NVIDIA Container Toolkit3. 使用 nvidia-ctk 命令配置容器运行4. 通过 docker 运行 nvidia-smi5. 运行 gpu-jupyter6. 访问 gpu-jupyter7. 测试 gpu-jupyter 是否可以访问 cuda 0. 背景 今天突…

了解Vue中日历插件Fullcalendar

实现效果如下图&#xff1a; 月视图 周视图 日视图 官方文档地址&#xff1a;Vue Component - Docs | FullCalendar 1、安装与FullCalendar相关的依赖项 npm install --save fullcalendar/vue fullcalendar/core fullcalendar/daygrid fullcalendar/timegrid fullcalend…

485.最大连续1的个数

前言 这两天突然发现力扣上还是有我能写出来的题的&#xff0c;虽说都是简单级别的&#xff08;以及一道中等的题&#xff09;&#xff0c;但是能写出来力扣真的太开心了&#xff0c;&#xff08;大佬把我这段话当个玩笑就行了&#xff09;&#xff0c;于是乎&#xff0c;我觉…