C++编程||日期类,日期相减,实现日期的下一天 两个日期 相减 日期 + 天数 得到的日期

 日期类,日期相减,实现日期的下一天
                两个日期  相减
                日期 + 天数 得到的日期
                具体要求:实现类date,其中
                构造函数包括year,month,day三个参数
                重载两个date类之间的-,以及date类的+=,-=
                使用int year(),int month(),int day()返回三个参数
 

#include <iostream>using namespace std;class date {private:int y;int m;int d;public:date(int, int, int);int year();int month();int day();date operator++ ();date operator++ (int);date operator-- ();date operator-- (int);friend int operator- (const date &dt1, const date &dt2);friend void operator+= (date &dt, const int n);friend void operator-= (date &dt, const int n);};date::date(int year = 0, int month = 0, int day = 0) {y = year;m = month;d = day;
}int date::year() {return y;
}int date::month() {return m;
}int date::day() {return d;
}date date::operator++ () {int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if (d != days[m - 1]) {d++;} else {d = 1;if (m != 12) {m++;} else {m = 1;y++;}}return * this;
}date date::operator++ (int day) {date dt(*this);int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if (d != days[m - 1]) {d++;} else {d = 1;if (m != 12) {m++;} else {m = 1;y++;}}return dt;
}date date::operator-- () {int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if(d == 1) {if (m == 1) {d = 31;m = 12;y--;} else {m--;d = days[m - 1];}} else {d--;}return * this;
}date date::operator-- (int day) {date dt(*this);int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if ((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) {days[1]++;}if(d == 1) {if (m == 1) {d = 31;m = 12;y--;} else {m--;d = days[m - 1];}} else {d--;}return dt;
}int operator- (const date &dt1, const date &dt2) {date dtemp(dt2);int count = 0;while (dt1.y != dtemp.y || dt1.m != dtemp.m || dt1.d != dtemp.d) {count++;dtemp++;}return count;
}void operator+= (date &dt, const int n) {for (int i = 0; i < n; i++) {dt++;}
}void operator-= (date &dt, const int n) {for (int i = 0; i < n; i++) {dt--;}
}int main(void) {using std::cin;using std::cout;using std::endl;date D1,D2;int year;int month;int day;cin >> year >> month >> day; //shu ru di yi ge ri qiD1 = date(year, month, day);cin >> year >> month >> day;  //shu ru di er ge ri qiD2 = date(year, month, day);cout << D2 - D1 << endl;cin >> day;  //shu ru yao jia jian de tian shu,D1 += day;D2 -= day;cout << D1.year() << " " << D1.month() << " " << D1.day() << endl;cout << D2.year() << " " << D2.month() << " " << D2.day() << endl;return 0;
}

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

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

相关文章

亚信安全助力宁夏首个人工智能数据中心建成 铺设绿色算力安全底座

近日&#xff0c;由宁夏西云算力科技有限公司倾力打造&#xff0c;亚信安全科技股份有限公司&#xff08;股票代码&#xff1a;688225&#xff09;全力支撑&#xff0c;总投资达数十亿元人民币的宁夏智算中心项目&#xff0c;其一期工程——宁夏首个采用全自然风冷技术的30KW机…

在做程序员的道路上,你学会什么,让你的技术突飞猛进

先动脑&#xff0c;再动手&#xff01; 先动脑子把流程梳理清楚&#xff0c;关键流程&#xff0c;问题点解决掉&#xff0c;再进行开发&#xff0c;比什么都重要&#xff01; 很多新手程序员拿着需求就是一顿噼里啪啦敲代码&#xff0c;最后发现设计垃圾、代码一堆 bug、返工…

复刻桌面小电视【包含代码分析】

宗旨&#xff1a;开源、分享、学习、进步&#xff0c;生命不息&#xff0c;折腾不止。 复刻小电视 感谢各位大佬的开源项目&#xff0c;让我有了学习的机会&#xff0c;如果侵权&#xff0c;请联系我删除。本人能力有限&#xff0c;如果有什么不对的地方&#xff0c;欢迎指正…

c/c++串的链式操作

文章目录 1.链式串的定义2.初始化3.赋值为04.赋值操作5.打印操作6.源码 本篇博客中都是带头结点的串。 1.链式串的定义 这里的数据域是4个字节&#xff0c;是为了节省空间。 typedef struct StringNode{char ch[4]; //按串长分配存储区&#xff0c;ch指向串的基地址struct S…

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录 一、引用1.1 引用概念1.2 引用特性1.3 常引用1.4 使用场景1.4.1 做参数1.4.2做返回值 1.5 引用和指针的区别1.6 小结一下 二、内联函数2.1 内联的概念2.2 内联的特性2.3 【面试题】 三、auto关键字(C11)3.1 类型别名思考3.2 auto简介 四、auto的使用细则4.1 基于范围的…

【2024年美国大学生数学建模竞赛】完整解析+模型代码+技术文档

美赛思路预定 01 美赛赛中时间分配美赛时间安排比赛前2~3天第一天&#xff08;2号&#xff09;第二天&#xff08;3号&#xff09;第三天&#xff08;4号&#xff09;第四天&#xff08;5号&#xff09;第五天&#xff08;6号&#xff09;8&#xff1a;00~10&#xff1a;00 02 …

固态硬盘颗粒,让我们了解下SLC、MLC、TLC

前文提要 近些年SSD的市场越来越好&#xff0c;大家的家用PC也逐渐都转向速度更快&#xff0c;玩游戏更流程的SSD,反而更加推动了SSD厂商的生产种类&#xff0c;但是其实大家还是挺关注SSD盘的使用寿命&#xff0c;处理数据速度&#xff0c;以及更重要的价格&#xff0c;面对市…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextPicker组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextPicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextPicker组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不…

什么是回归测试?回归测试的类型和方法?

随着软件开发进程的进行&#xff0c;每一次的修改和更新都有可能引入新的问题和错误。为了确保产品质量和稳定性&#xff0c;需要进行回归测试。那么&#xff0c;什么是回归测试&#xff1f;本文将为您解答。 回归测试是指在软件代码、使用环境或产品需求发生改变时&#xff0…

【Oracle云】使用 boto3 访问 OCI 对象存储 (AWS S3协议兼容)

在现代云计算环境中&#xff0c;S3&#xff08;Simple Storage Service&#xff09;协议已经成为云对象存储的事实标准。它提供了简单、可扩展、高度耐用的存储解决方案&#xff0c;得到了广泛应用。Oracle Cloud Infrastructure&#xff08;OCI&#xff09;秉承着开放性和灵活…

C++初阶 类和对象(补充)

目录 一、友元 1.1什么是友元&#xff1f; 1.2如何使用友元&#xff1f; 1.3使用友元 1.4使用友元注意事项 二、初始化列表 2.1什么是初始化列表? 2.2为什么要有初始化列表&#xff1f; 2.3使用初始化列表 2.4注意事项 一、友元 1.1什么是友元&#xff1f; 友元是一…

大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统

文章目录 大数据知识图谱之深度学习——基于BERTLSTMCRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat Premiu…

Windows Server 2003 DNS服务器搭建

系列文章目录 目录 系列文章目录 文章目录 前言 一、DNS服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 3)安装Web服务器和DNS服务器 4)查看安装是否成功 5)这里直接配置DNS服务器了,Web服务器如何配置我已经发布过了 文章目录 Windows Serve…

长时间佩戴骨传导耳机会损害听力吗?骨传导耳机有什么优点?

如果是正常的使用&#xff0c;是不会对损伤听力的&#xff0c;如果错误的使用&#xff0c;比如说高音量使用&#xff0c;长时间也会出现一定的危害&#xff0c;而且骨传导耳机相比于传统耳机&#xff0c;其优点也要多一些&#xff0c;下面一起看下骨传导耳机都有哪些优点吧。 佩…

iOS 文件分割保存加密

demo只是验证想法&#xff0c;没有做很多异常处理 默认文件是大于1KB的&#xff0c;对于小于1KB的没有做异常处理demo中文件只能分割成2个&#xff0c;可以做成可配置的N个文件分割拼接还可以使用固定的二进制数据&#xff0c;拼接文件开头或结尾 不论哪种拼法&#xff0c;目的…

redis下载与安装教程(centos下)

文章目录 一&#xff0c;redis下载1.1上传到linux服务器上 二&#xff0c;redis安装2.1 安装依赖2.2 解压包2.3 编译并安装2.4 指定配置启动2.5 设置redis开机自启 一&#xff0c;redis下载 官网&#xff1a; https://redis.io1.1上传到linux服务器上 我用filezila上传到/us…

AUTOSAR内存篇 -FlashDriver(Fls)

文章目录 简介功能介绍通用设计规则外部闪存驱动加载,执行和移除闪存访问代码API介绍类型定义Fls_ConfigTypeFls_AddressTypeFls_LengthType函数定义Fls_InitFls_EraseFls_WriteFls_Cancel

LabVIEW核能设施监测

LabVIEW核能设施监测 在核能领域&#xff0c;确保设施运行的安全性和效率至关重要。LabVIEW通过与硬件的紧密集成&#xff0c;为高温气冷堆燃料装卸计数系统以及脉冲堆辐射剂量监测与数据管理系统提供了解决方案。这些系统不仅提高了监测和管理的精确度&#xff0c;也保证了核…

【编程语言】头文件、源文件、资源文件

头文件、源文件、资源文件是软件开发中常见的文件类型&#xff0c;用于组织和管理代码和资源。 •头文件&#xff08;Header File&#xff09; 是一种包含函数声明、宏定义、类型定义等信息的文件&#xff0c;在源文件中通过#include指令将头文件包含进来&#xff0c;以便能够使…

实时嵌入式:无限阻塞

无限阻塞是指任务在等待某些条件满足时&#xff0c;永远无法继续执行。在多任务或多线程操作系统中&#xff0c;无限阻塞是一个常见问题&#xff0c;可以由多种原因造成。 常见原因 死锁&#xff1a;死锁是指两个或多个任务相互等待对方持有的资源而无法继续执行。在这种情况…