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 处理多个 caseint 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.rhkb.cn/news/241470.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【创作活动】ChatGPT 和文心一言哪个更好用?

文章目录 文心一言优点缺点 ChatGPT优点缺点 Java编码能力比较对人工智能的看法 ChatGPT是由OpenAI开发的交互式AI大模型&#xff0c; 文心一言是由百度研发的知识增强大语言模型&#xff0c;本文从Java开发的角度对比一下哪个更好用&#xff08;本文仅用于投稿CSDN创造活动&am…

虚拟线程探索与实践

优质博文&#xff1a;IT-BLOG-CN 一、简介 虚拟线程是轻量级线程&#xff0c;极大地减少了编写、维护和观察高吞吐量并发应用的工作量。虚拟线程是由JEP 425提出的预览功能&#xff0c;并在JDK 19中发布&#xff0c;JDK 21中最终确定虚拟线程&#xff0c;以下是根据开发者反馈…

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性&#xff0c;较固定资产抵押和质押、第三方担保等方式&#xff0c;股权质押融资风险易受企业经营状况等因素的影响&#xff0c;主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…

30分钟带你深入优化安卓Bitmap大图

30分钟带你源码深入了解Bitmap以及优化安卓大图 一、前言二、Bitmap入门1. 如何创建Bitmap?2. Bitmap的堆内存分布在哪里3. 图片文件越大&#xff0c;Bitmap堆内存会越大吗&#xff1f;4. 如何管理Bitmap的内存&#xff1f;5. 实战修改Bitmap的堆内存&#xff0c;改变图片的图…

一万六千字大章:Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析

Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段解析 Manifest.json 文件格式 每个扩展程序的根目录中都必须有一个 manifest.json 文件&#xff0c;其中列出了有关该扩展程序的结构和行为的重要信息。 1、Demo 展示 1. 最小文件 {"manifest_version": 3,&quo…

【算法与数据结构】Java实现查找与排序

文章目录 第一部分&#xff1a;查找算法二分查找插值查找分块查找哈希查找树表查找 第二部分&#xff1a;排序算法冒泡排序选择排序插入排序快速排序 总结 第一部分&#xff1a;查找算法 二分查找 也叫做折半查找&#xff0c;属于有序查找算法。 前提条件&#xff1a;数组数据…

C#MQTT编程07--MQTT服务器和客户端(wpf版)

1、前言 上篇完成了winform版的mqtt服务器和客户端&#xff0c;实现了订阅和发布&#xff0c;效果666&#xff0c;长这样 这节要做的wpf版&#xff0c;长这样&#xff0c;效果也是帅BBBB帅&#xff0c;wpf技术是cs程序软件的福音。 wpf的基础知识和案例项目可以看我的另一个专…

使用Python的pygame库实现下雪的效果

使用Python的pygame库实现下雪的效果 关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 先给出效果图&#xff1a; 源码如下&#xff1a; import pygame import random# 初始化pygame pygame.init()# 设置屏幕尺寸 width…

用Python优雅地写出数学表达式的LaTeX代码

用Python优雅地写出数学表达式的LaTeX代码 目录 Latexify LaTeX 安装方法 版本要求 使用方法 实例一 实例二 实例三 实例四 实例五 Latexify Latexify是一个Python库&#xff0c;它可以将数学表达式转换为LaTeX代码。通过使用latexify-py&#xff0c;可以将数学表达…

传统语音识别系统流程

文章目录 概述语音识别原理公式语音识别术语&#xff1a;分帧提取声学特征声学模型 概述 语音识别传统方法主要分两个阶段&#xff1a;训练和识别&#xff0c;训练阶段主要是生成声学模型和语言模型给识别阶段用。传统方法主要有五大模块组成&#xff0c;分别是特征提取&#…

java使用jsch处理软链接判断是否文件夹

前言 这一次主要是碰到一个问题。因为使用jsch去读取文件的时候&#xff0c;有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹&#xff1f;因为他没有提供可以直接读取的方法&#xff0c;用权限信息去判断…

vue2使用 element表格展开功能渲染子表格

默认样式 修改后 样式2 <el-table :data"needDataFollow" border style"width: 100%"><el-table-column align"center" label"序号" type"index" width"80" /><el-table-column align"cent…

64.Spring事件监听的核心机制是什么?

Spring事件监听的核心机制是什么? spring的事件监听有三个部分组成 事件(ApplicationEvent) 负责对应相应监听器 事件源发生某事件是特定事件监听器被触发的原因监听器(ApplicationListener) 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应…

关于java中的Super详解

关于java中的Super详解 我们在上一篇文章中了解到了面向对象三大基本特征&#xff0c;继承&#xff0c;我们本篇文章中来了解一下Super&#x1f600;。 一、Super和this调用属性 this&#xff1a;当前类中使用。super&#xff1a;父类使用。 我们直接用代码来说明一下。 1…

如何使用JS逆向爬取网站数据

引言&#xff1a; JS逆向是指利用编程技术对网站上的JavaScript代码进行逆向分析&#xff0c;从而实现对网站数据的抓取和分析。这种技术在网络数据采集和分析中具有重要的应用价值&#xff0c;能够帮助程序员获取网站上的有用信息&#xff0c;并进行进一步的处理和分析。 基…

windows vscode jsoncpp cmake c++ 构建项目

jsoncpp的编译和使用推荐文章&#xff1a;jsoncpp的编译和使用 | 爱编程的大丙 (subingwen.cn)https://www.subingwen.cn/cpp/jsoncpp/从这个链接下载jsoncpp-master&#xff1a;https://github.com/open-source-parsers/jsoncpp 可以把这个文件夹名字改成jsoncpp&#xff0c;…

探索设计模式的魅力:“感受单例模式的力量与神秘” - 掌握编程的王牌技巧

在软件开发的赛场上&#xff0c;单例模式以其独特的魅力长期占据着重要的地位。作为设计模式中的一员&#xff0c;它在整个软件工程的棋盘上扮演着关键性角色。本文将带你深入探索单例模式的神秘面纱&#xff0c;从历史渊源到现代应用&#xff0c;从基础实现到高级技巧&#xf…

未来的NAS:连接您的数字生活

未来的NAS&#xff1a;连接您的数字生活 引言 网络附加存储&#xff08;Network Attached Storage&#xff0c;简称NAS&#xff09;是一种通过网络连接的存储设备&#xff0c;用于集中存储和共享数据。传统的NAS设备通常包含一个或多个硬盘驱动器&#xff0c;可以通过局域网连…

【编码魔法师系列_构建型4】原型模式(Prototype Pattern)

&#x1f449;直达编码魔法师系列其他文章&#x1f448; 学会设计模式&#xff0c;你就可以像拥有魔法一样&#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们&#xff08;GoF&#xff09;凝聚出来的最佳实践&#xff0c;可以提高代码的可读性、可维…

基于网络爬虫的微博热点分析,包括文本分析和主题分析

基于Python的网络爬虫的微博热点分析是一项技术上具有挑战性的任务。我们使用requests库来获取微博热点数据&#xff0c;并使用pandas对数据进行处理和分析。为了更好地理解微博热点话题&#xff0c;我们采用LDA主题分析方法&#xff0c;结合jieba分词工具将文本分割成有意义的…