(注:本文所展示代码均为本人所写,不一定为最优)

 

我们首先用纯逻辑和手动计算来拆解日期模拟题,再来代码实现,看看这些问题的底层思路怎么玩明白~

 一、基础日期计算:直接算“过几天是哪天”

即进位的思路:

日期模拟进位,核心是低位(日)累计满当月天数,就向高位(月)进 1,同时低位重置;月累计满 12,就向年进 1,月重置 ,类似十进制“个位满 10 进 1 到十位”,且要结合大小月、闰年(影响 2 月天数,即 2 月满 28 或 29 天才进位 )调整规则 。

题目举例:2024年7月20日过45天是哪天?

1. 先看当月剩余天数:7月有31天,20日到31日还剩31-20=11天;

2. 剩下的天数往后推:45-11=34天,即进入8月;

3. 8月有31天,34天超过31天,所以8月31天后还剩34-31=3天,进入9月;

4. 结果:2024年9月3日。

代码实现如下:

 

 

二、闰年与特殊月份:必须记牢规则

闰年规则(划重点!)

- 能被4整除但不能被100整除的年份是闰年(如2020年);

- 能被400整除的年份也是闰年(如2000年)

 - 平年2月28天,闰年2月29天,其他月份天数固定(1、3、5、7、8、10、12月31天,4、6、9、11月30天)。

代码实现判断闰年:

以上这两个函数均用于判断闰年,核心逻辑一致(满足能被 4 整除但不能被 100 整除,或能被 400 整除 ),差异在于:

 leap_year1 :用  if - else  分支,先判断条件,再分别返回  true / false  ,逻辑清晰直观。

leap_year2 :直接通过条件表达式返回结果,更简洁紧凑,代码量少 。(推荐算法题优先考虑)

 

题目举例:2024年2月1日到2024年5月1日共有多少天?

计算步骤:

- 2024年是闰年,2月有29天,2月1日到2月29日:29天;

- 3月31天,4月30天;

- 总天数:29+31+30=90天。

 

三.练习题

1.计算一年的第几天
https://www.nowcoder.com/practice/769d45d455fe40b385ba32f97e7bcded?tpId=37&&tqId=21296&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking

 解题思路:

1. 先判断年份是否为闰年,确定2月天数。

2. 依据月份,累加之前月份的天数(1、3、5等大月31天,4、6等小月30天,2月按平/闰年算)。

3. 最后加上当月的天数,总和即为该日期是当年第几天。

参考代码如下:

 

2.日期差值

https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c?tpId=62&&tqId=29468&rp=1&ru=

 参考代码

 以上代码:

1.  leapyear 函数:判断年份是否为闰年,依据能被4整除但非100整除,或能被400整除的规则 。

2.  cntday 函数:先根据平闰年设置2月天数,通过循环累加当前日期前所有月份天数,再加上当日天数;若跨多年,循环累加之前每年的天数(闰年366天,平年365天 ),得到日期距起始的总天数。

3.  main 函数:拆分输入日期的年、月、日,调用 cntday 分别算两日期总天数,用绝对值差加1(包含两端日期 ),输出结果,处理多组输入。

 

3.打印日期

https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b?tpId=69&&tqId=29669&rp=1&ru=/activity/oj&qru=/ta/hust-kaoyan/question-ranking

 参考代码:

 以上 C++ 代码的解题思路如下:

1. 闰年判断: leap_year  函数依据规则(能被 4 整除但非 100 整除,或能被 400 整除 )判断年份是否为闰年,用于确定 2 月天数。

2. 数据初始化: main  函数里,定义年、日、月变量, arr  数组存储各月天数(下标对应月份,0 号元素无用 )。

3. 处理输入与日期转换: while  循环读取年和天数,先根据闰年设置 2 月天数。通过循环,用总天数依次减去各月天数,同时月份递增,直到剩余天数小于当前月天数,确定最终月份。

4. 格式化输出:依据月份和日期的位数(是否小于 10 ),分情况格式化输出完整日期,如补前导 0 ,让输出符合常见日期显示格式 。

 

4.累加日期

https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d?tpId=40&&tqId=31013&rp=1&ru=/activity/oj&qru=/ta/kaoyan/question-ranking

 参考代码

 以上代码用于日期累加,解题思路如下:

1. 闰年判断: leap_year  函数按规则(能被4整除且非100整除,或能被400整除 )判断闰年,影响2月天数。

2. 输入处理:读取测试用例数  n  ,再依次读入年、月、日、待加天数。

3. 日期推算:先根据闰年设置2月天数,将待加天数与当日天数合并。通过循环,用总天数减当前月天数、递增月份,若超12月则跨年并重置月份,同时更新闰年状态。

4. 格式化输出:按月份和日期的位数补前导0,输出推算后的日期,处理完一组数据  n  减1,直到所有用例完成 。

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

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

相关文章

深入剖析Nginx:从入门到高并发架构实战

深入剖析Nginx:从入门到高并发架构实战 摘要:本文全面解析Nginx的核心功能、架构原理及实战配置,涵盖负载均衡、反向代理、动静分离等高级应用场景,助你构建高性能Web服务架构。 一、Nginx是什么?为什么它如此重要&…

Qt客户端技巧 -- 窗口美化 -- 圆角窗口

不解析&#xff0c;直接给代码例子 利用窗口重绘事件处理函数paintEvent main.cpp #include <QtCore/qglobal.h> #if QT_VERSION > 0x050000 #include <QtWidgets/QApplication> #else #include <QtGui/QApplication> #endif#include "roundedwin…

Three.js学习笔记-三要素

Three.js 学习笔记-三要素 一、Three.js 简介 (一)前世今生 Three.js 是一款运行在浏览器中的 3D 引擎,由 Ricardo Cabello(Mr.doob)在 2010 年 4 月于 GitHub 首次发布 。其起源可追溯到本世纪初,代码最初用 ActionScript 编写,2009 年移植到 JavaScript。随着 Web…

动力电池点焊机:驱动电池焊接高效与可靠的核心力量|比斯特自动化

在新能源汽车与储能设备需求激增的背景下&#xff0c;动力电池的制造工艺直接影响产品性能与安全性。作为电芯与极耳连接的核心设备&#xff0c;点焊机如何平衡效率、精度与可靠性&#xff0c;成为电池企业关注的重点。 动力电池点焊机的核心功能是确保电芯与极耳的稳固连接。…

OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个用于在 GPU 上执行模板匹配的 TemplateMatching 对象。 该函数返回一个指向 TemplateMatching 的智能指针&#xff08;Ptr&#xff09;…

natapp 内网穿透失败

连不上网络错误调试排查详解 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 如何将DNS服务器修改为114.114.114.114_百度知道 连不上/错误信息等问题解决汇总 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 nslookup auth.natapp.cnping auth.natapp.cn

游戏(game)

题目描述 小明最近迷上了一款游戏&#xff0c;并且很想成为这款游戏的高手&#xff0c;这款游戏需要用 资源来买装备。他刚开始的资源价值为0,于是他每天都会做日常任务来获得价值为1的资源。 这款游戏中有每日商店&#xff0c;小明已经提前知道了接下来n天会出现的装备&#x…

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…

关于脏读,幻读,可重复读的学习

mysql 可以查询当前事务隔离级别 默认是RR repeatable-read 如果要测脏读 要配成未提交读 RU 读到了未提交的数据。 3.演示不可重复读 要改成提交读 RC 这个是指事务还未结束&#xff0c;其他事务修改了值。导致我两次读的不一样。 4.RR–可以解决不可重复读 小总结&…

华为云Astro中服务编排、自定义模型,页面表格之间有什么关系?如何连接起来?如何操作?

目录 一、核心关系解析 二、连接方式与操作步骤 (一)服务编排与自定义模型的连接 (二)自定义模型与页面表格的连接 (三)服务编排与页面表格的连接 三、操作示例:构建数据处理闭环 场景:用户在页面表格中修改设备信息,触发服务编排校验数据并更新数据库。 四、…

Docker镜像无法拉取问题解决办法

最近再学习RabbitMQ&#xff0c;需要从Docker镜像中拉取rabbitMQ&#xff0c;但是下拉失败 总的来说就是无法和docker镜像远程仓库建立连接 我又去尝试ping docker.io发现根本没有反应&#xff0c;还是无法连接找了许多办法还是没有办法解决&#xff0c;最后才发现是镜像问题&a…

向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘

作者&#xff1a;来自腾讯云刘忠奇 2025 年 1 月&#xff0c;腾讯云 ES 团队上线了 Elasticsearch 8.16.1 AI 搜索增强版&#xff0c;此发布版本重点提升了向量搜索、混合搜索的能力&#xff0c;为 RAG 类的 AI Search 场景保驾护航。除了紧跟 ES 官方在向量搜索上的大幅优化动…

electron-vite串口通信

一、构建项目后&#xff0c;安装“串口通信库” npm install serialport二、设置 npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild 注意&#xff1a;如果执行报错以下问题 1、未配置python变量 2、没有Microsoft Visual Studio BuildTools 3…

Cisco IOS XE WLC 任意文件上传漏洞复现(CVE-2025-20188)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…

从 iPhone 备份照片: 保存iPhone图片的5种方法

随着智能手机越来越融入我们的生活&#xff0c;我们的照片已成为我们设备上最有价值的数据形式之一。然而&#xff0c;iPhone内部存储空间仍然有限&#xff0c;因此我们需要将iPhone中的照片备份到另一个地方&#xff0c;以释放空间并确保珍贵的图像记忆的安全。阅读本指南&…

Ubuntu崩溃修复方案

当Ubuntu系统崩溃时,可依据崩溃类型(启动失败、运行时崩溃、完全无响应)选择以下修复方案。以下方法综合了官方推荐和社区实践,按操作风险由低到高排序: 一、恢复模式(Recovery Mode) 适用场景​​:系统启动卡顿、登录后黑屏、软件包损坏等。 ​​操作步骤​​: ​…

免费批量文件重命名工具

免费批量文件重命名工具 &#x1f310; 网站: 免费批量文件重命名工具 &#x1f4cc; 工具简介 一款功能强大的批量文件重命名工具&#xff0c;支持多种重命名方式&#xff0c;操作简单&#xff0c;完全免费&#xff01; &#x1f680; 主要功能 功能描述自定义重命名直接输…

VR博物馆推动现代数字化科技博物馆

VR博物馆&#xff1a;推动现代数字化科博馆新篇章 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;Virtual Reality, VR&#xff09;技术已经逐渐渗透到我们生活的方方面面&#xff0c;其中&#xff0c;VR博物馆作为现代数字化科博馆的重要形式之一&#xff0c;以独特的优…

COMSOL与MATLAB联合仿真人工智能的电学层析成像系统

关键词&#xff1a;MATLAB&#xff0c;电学层析成像&#xff0c;人工智能&#xff0c;图像重建&#xff0c;深度学习 一、引言 基于人工智能的电学层析成像系统是一种创新的检测技术&#xff0c;结合了电学层析成像技术与人工智能算法的优势。电学层析成像技术&#xff0c;简…

【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式

一直感觉 Visio 或者 PPT 中 Mathtype 对 latex 公式渲染效果不好&#xff0c;且在 Ubuntu 下的支持不好&#xff0c;最近重新调研发现一个好用的工具 drawio。 在线使用 https://app.diagrams.net/?srcabout 也有桌面版的应用&#xff0c;Windows 就下载 exe 安装器&#x…