当前位置: 首页 > news >正文

输入日期求n天后

题目要求:输入一个日期startdate年月日和days天数(>=1),输出自该日期days天后的日期enddate。
要求输出和输出的年份为四位整数,输入时对输入数据的有效性进行检查;同时考虑跨月,跨年和闰年情况,闰年用自定义函数计算,日期用结构体描述。

乍一看很复杂,要输入输出有效性判断,加日期,每个月天数还不一样,还得跨年跨月的,闰年我也忘了咋定义的,不过不慌,都是纸老虎,咱们一步步来,先看看这个闰年咋回事。

我们一般说的是公历闰年,公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年场365天5时48分46秒,因此产生了平年和闰年两种规定,平年一年有365天,比回归年短0.22422日,四年共短0.9688日,故每四年增加一日,这一年有366天,就是闰年。但四年增加一日又比四个回归年多0.0312日,400年后就多3.12日,故400年中少设3个闰年,也就是再400年中只设97个闰年,这样公历年的平均长度与回归年就近似了。
由此规定:每400年97闰,不逢百的年份能被4整除的,或者逢百被400整除的,就是闰年,这一年的2月是29天。

逻辑就是被一百整除的还需被四百整除的是闰年,不被一百整除的被4整除是闰年,故闰年判断的代码如下:

int runyear(int years){    if(years%100==0&&years%400==0){cout<<years<<"是闰年"<<endl;return 1;}else if(years%100!=0&&years%4==0){cout<<years<<"是闰年"<<endl;return 1;}    else return 0;}

下个模块就是判断输入有效性,结构体的年份四位数,大于一千小于9999,月份在一和12之间,日期1、3、5、7、8、10、12月最大31,2月结合年份判断,闰年29,平年28,其余最大30,这么一看还挺复杂,结合后续判断需要,我们把这个最大天数月份表先构建出来:

int monthTodays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//月份和每天对照表
if(runyear(startdate.year)) monthTodays[1]=29;//闰年2月29天
int check(struct date){    if(date.year<1000||date.year>9999){cout<<"illgal input!"<<endl;return 0;}else if(date.month<1||date.month>12){cout<<"illgal input!"<<endl;return 0;}//年份和月份判断都简单else if(date.days>0||date.days<monthTodays(data.month)){天数小于月份最大值,借助数组对照方便很多cout<<"illgal input!"<<endl;return 0;}else return 1;
}    

最后就是根据已有日期计算新日期了,这个复杂在情况多,跨月跨年,但是仔细想想操作也很少,天数溢出了就月份加加日期归一呗,无非多一次月份等于12的跨年判断,过一个月就减去剩余天数,代码如下:

struct date caculate(struct startdate,int days,int monthTodays[]){        int rest =days;//剩余天数struct enddate=startdate;while(rest>0){int temp=monthTodays[startdate.month]-startdate.days;//看当月还剩多少天if(rest>temp)//当月天数不足以加完{   if(startdate.month==12)//跨年{enddate.year++;enddate.month=1;enddate.days=1;}else{rest=rest-temp;enddate.month++;enddate.days=1;//更新月份}else{//当月以内就能解决enddate.days=enddate.days+rest;rest=0;}}cout<<enddate.year<<" "<<enddate.month<<" "<<enddate.days<<endl;return enddate;
}    

最后就是主函数了,定义结构体,输入起始日期和days,判断输入有效性,计算新日期,就这一套流程,代码如下:

int main(){int monthTodays[12]={31,28,31,30,31,30,31,31,30,31,30,31};//月份和每天对照表cout<<"输入起始日期";cin>>startdate.year>>startdate.month>>startdate.days;int adddays=0;cout<<"输入新增天数";cin>>adddays;if(check(startdate)){//检查输入合法if(runyear(startdate.year)) monthTodays[1]=29;//闰年2月29天struct enddate=caculate(startdate,adddays,monthTodays)}return 0;
}

写在后面

这套代码其实并不能运行,蹦出十来个错,应该是哪结构不对劲了,但是编译环境简陋,用平板的C++编译器,找错很费劲,就这么着吧;但是逻辑通过写这篇文章的时候又梳理了一遍,应该是没啥问题。

相关文章:

输入日期求n天后

题目要求&#xff1a;输入一个日期startdate年月日和days天数&#xff08;>1&#xff09;&#xff0c;输出自该日期days天后的日期enddate。 要求输出和输出的年份为四位整数&#xff0c;输入时对输入数据的有效性进行检查&#xff1b;同时考虑跨月&#xff0c;跨年和闰年情…...

科技论文中的Assumption、Remark、Property、Lemma、Theorem、Proof含义

一、背景 学控制、数学、自动化专业的学生在阅读论文时&#xff0c;经常会看到Assumption、Remark、Property、Lemma、Theorem、Proof等单词&#xff0c;对于初学者可能不太清楚他们之间的区别&#xff0c;因此这里做一下详细的说明。 以机器人领域的论文为例。 论文题目&…...

逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取

文章目录 一、引言二、逆向爬虫进阶技巧三、逆向爬虫进阶实战代码片段四、总结与展望好书推荐内容简介作者简介前言节选 一、引言 随着网络技术的发展&#xff0c;网站为了保护自己的数据和资源&#xff0c;纷纷采用了各种反爬虫机制。然而&#xff0c;逆向爬虫技术的出现&…...

个体民营诊所-如何打破传统发展瓶颈,增客流-提营收?

随着人们对传统医学和自然疗法的需求增加&#xff0c;开办针灸诊所可以满足社会公众对健康的需求&#xff0c;提供更多元化的医疗选择。 针灸作为一种传统的中医疗法&#xff0c;不仅可以帮助调理身体&#xff0c;还能帮助客户缓解疼痛&#xff0c;改善循环等。但针灸诊所&…...

Filament引擎分析--command抽象设备API

1. 前言 Filament中使用了FrameGraph来管理渲染管线&#xff0c;需要准备两点&#xff1a; 设备接口抽象&#xff1a;设备API抽象为Command资源抽象&#xff1a;使用虚拟资源&#xff0c;在实际用到时再创建&#xff0c;方便剔除无用资源 下面就围绕Filament中设备API抽象为…...

网络协议与响应码

http&#xff1a;超文本&#xff08;不止文本&#xff09;传输协议&#xff0c;底层是tcp/ip get&#xff0c;post&#xff0c;put&#xff0c;delete GET把参数包含在 URL 中&#xff0c; POST 通过 request body 传递参数 请求都是tcp链接&#xff0c;HTTP规定&#xff0c;当…...

彻底删除VsCode配置和安装过的插件与缓存

前言 当你准备对 Visual Studio Code&#xff08;VSCode&#xff09;进行重新安装时&#xff0c;可能遇到一个常见问题&#xff1a;重新安装后&#xff0c;新的安装似乎仍然保留了旧的配置信息&#xff0c;这可能会导致一些麻烦。这种情况通常是由于卸载不彻底所致&#xff0c…...

【XILINX】ISE chipscope出现错误 Can‘t load jre bin client jvm.dll

记录一个ISE软件使用过程中遇到的问题及解决方案。 问题 ISE chipscope出现错误 Cant load jre bin client jvm.dll C:\Xilinx\14.7\ISE_DS\ISE\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt64 C:\Xilinx\14.7\ISE_DS\ISE\bin\nt6…...

并发编程(已整理,已废弃)

这一块知识&#xff0c;那真是有的啃了。 直接先看速成基础&#xff0c;再直接吃掉高频考点。 每个小知识点&#xff0c;直接看短视频&#xff0c;浅浅了解&#xff0c;在写下来就是自己的资料。 # 基础 一个进程有多个线程&#xff0c;多个线程共享进程的堆和方法区&#xf…...

第一篇:MongoDB的安装、启动、关闭、链接shell

目录 简介 安装 安装遇到的问题 查看brew 当前使用的源&#xff1a; 更换brew 源。更换成清华大学镜像源 版本查看 MongoDB 数据目录与日志目录 启动方式一&#xff1a; 启动MongoDB 验证MongoDB 是否正常运行 停止或重新启动 停止MongoDB 服务 重新启动MongoDB服…...

Python爬虫之重放攻击详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 重放攻击是一种网络攻击方式&#xff0c;攻击者通过截获合法用户的请求&#xff0c;并将其重新发送&#xff0c;以模拟合法用户的行为。在Python爬虫领域&#xff0c;了解重放攻击的原理和防范方法至关重要。本文…...

构建一个语音转文字的WebApi服务

构建一个语音转文字的WebApi服务 简介 由于业务需要&#xff0c;我们需要提供一个语音输入功能&#xff0c;以便更方便用户的使用&#xff0c;所以我们需要提供语音转文本的功能&#xff0c;下面我们将讲解使用Whisper将语音转换文本&#xff0c;并且封装成WebApi提供web服务…...

在开发软件KEIL MDK和IAR开发工程里面打印行号、文件名、函数名、时间

最近应用固件没有时间记录&#xff0c;分别请那个是最新的&#xff08;在没有版本区别的情况下&#xff09;&#xff0c;有个办法记录编译时间即可&#xff0c;记录笔记以便查看 在软件工程里面直接用宏 __FILE __ 当前程序文件名的字符串 __FUNCTION __ 当前函数的名字字符串 …...

springboot(ssm健身器材用品网 健身用品商城Java(codeLW)

springboot(ssm必录德健身器材用品网 健身用品商城Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&am…...

idea git合并推送分支

远端代码合并到当前分支 1.本地切换到当前分支 2.远端目标分支右键合并到当前分支(使用合并拉入) 本地当前分支推送合并到远端分支 1.切换到远端本地分支 2.合并本地其他分支(想要推送的分支)到当前分支 3.推送分支 注意:这里的合并是:将XXX合并到XXX中 …...

AntDesignBlazor示例——创建列表页

本示例是AntDesign Blazor的入门示例&#xff0c;在学习的同时分享出来&#xff0c;以供新手参考。 示例代码仓库&#xff1a;https://gitee.com/known/AntDesignDemo 1. 学习目标 使用Table组件创建列表页面使用DisplayName特性显示中文表头使用模板和Tag组件显示高温数据使…...

微信小程序模板选择指南:如何找到靠谱的平台?

随着移动互联网的快速发展&#xff0c;越来越多的企业和商家都在微信小程序上开展业务。而他们也希望可以通过微信小程序模板快速搭建小程序&#xff0c;那么如何才能找到一个靠谱的微信小程序模板平台呢&#xff1f;下面给大家简单讲解一下。 首先要知道的是&#xff0c;微信小…...

es常用查询编辑

查询指定id信息 GET /index_name/_doc/1074266245查询指定信息并降序 GET /index_name/_search {"query": {"term": {"deviceId": {"value": "1074266245"}}}, "sort": [{"timestamp": {"order&qu…...

记录 | linux静态库和动态库的理解

hello.cpp&#xff1a; #include <cstdio>void hello() {printf("Hello, world!\n"); }main.cpp&#xff1a; #include <cstdio>void hello();int main() {hello();return 0; }静态库编译配置&#xff1a; cmake_minimum_required(VERSION 3.12) proj…...

ParBFT: Faster Asynchronous BFT Consensus with a Parallel Optimistic Path

目录 笔记后续的研究方向摘要引言 ParBFT: Faster Asynchronous BFT Consensus with a Parallel Optimistic Path CCS 2023 笔记 后续的研究方向 摘要 为了减少异步拜占庭容错&#xff08;BFT&#xff09;共识的延迟和通信开销&#xff0c;通常会添加一条乐观的路径&#xf…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...