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

实现跨天跨年的代码分享

#include
#include
using namespace std;
// 日期基类
class Date {
protected:
int year, month, day;
// 获取当月合法最大天数,兼容闰年
int getMaxDay() const {
int monthDays[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
return 29;
return monthDays[month];
}
public:
Date(int y = 2026, int m = 1, int d = 1) : year(y), month(m), day(d) {}
// 日期增加1天
void addOneDay() {
day++;
if (day > getMaxDay())
{
day = 1;
month++;
if (month > 12)
{
month = 1;
year++;
}
}
}
// 打印日期
void showDate() const {
printf(“%d-%02d-%02d”, year, month, day);
}
};
// 时钟基类
class Clock {
protected:
int hour, minute, second;
string period;
public:
// 构造函数初始化时间,默认00:00:00 AM
Clock(int h = 0, int m = 0, int s = 0, string p = “AM”)
: hour(h), minute(m), second(s), period§ {
}
// 单秒递增
void addSecond() {
second++;
if (second >= 60)
{
second = 0;
minute++;
if (minute >= 60)
{
minute = 0;
hour++;
if (hour >= 12)
{
hour %= 12;
period = (period == “AM”) ? “PM” : “AM”;
if (hour == 0) hour = 12;
}
}
}
}
void showTime() const
{
printf("%02d:%02d:%02d %s ", hour, minute, second, period.c_str());
}
};
// 多重继承:日期+时钟一体类
class ClockWithDate : public Date, public Clock {
public:
// 多父类构造初始化
ClockWithDate(int y = 2026, int mo = 1, int d = 1, int h = 0, int mi = 0, int s = 0, string p = “AM”)
: Date(y, mo, d), Clock(h, mi, s, p) {
}

// 批量加N秒,自动处理跨天、跨年 void addManySeconds(int addNum) { for (int i = 0; i < addNum; i++) { // 记录加秒前时刻 bool isMidnightCross = (hour == 11 && minute == 59 && second == 59); addSecond(); // 若刚好从11:59:59变为12:00:00,说明跨一天 if (isMidnightCross && hour == 12 && minute == 0 && second == 0) { addOneDay(); } } } // 完整输出 日期+时间 void showAllInfo() const { showTime(); showDate(); cout << endl; }

};
int main()
{
// 初始化:2026年12月31日 23:59:59 PM
ClockWithDate dt(2026, 12, 31, 11, 59, 59, “PM”);
cout << “初始日期时间” << endl;
dt.showAllInfo();
int secInput;
cout << “请输入要增加的总秒数:”;
cin >> secInput;
dt.addManySeconds(secInput);
cout << “\n增加" << secInput << "秒后” << endl;
dt.showAllInfo();
return 0;
}

http://www.jsqmd.com/news/1069872/

相关文章:

  • 备孕期为什么要补充维生素b?高仕星维生素b帮你打好营养基础
  • Python的__complex__中的类型系统
  • 移动端性能优化方法论
  • C++中vector和list对比
  • Tauri:10万Star的Rust桌面框架,Electron终于有对手了
  • 【JAVA毕设源码分享】基于springboot企业人事管理系统(程序+文档+代码讲解+一条龙定制)
  • 写歌作词一体化平台:多款AI音乐工具使用体验分享
  • 为什么我反对在业务代码里大量使用设计模式?
  • C++ 循环结构详解:for、while、do-while 循环练习
  • 分布式技术趋势分析
  • 将旧项目迁移到云原生架构的“心路历程”
  • 《C++》 前七章期末通俗版复习计划
  • Codex 桌面版远程连接 Ubuntu进行开发
  • Kubernetes 标签与调度实战指南
  • Rust系统编程与操作系统交互
  • Rust的async函数中的局部变量跨await点存活分析与优化
  • Rust 所有权模型的设计理念
  • 【电脑问题】删除某文件时提示“无法显示当前所有者”
  • 4.1.1 SQL执⾏顺序
  • 跨境电商 A+ 页面制作实战:3 步利用 AI 生成高转化详情页(附提示词)
  • 计算机视觉模型的部署优化与边缘设备推理加速
  • 软件命令管理化的操作封装调用
  • 配置文件管理:多种环境配置分离
  • 阿尔弗雷德·贝恩哈德·诺贝尔的诗歌
  • Go语言的sync.RWMutex读写锁与goroutine调度在锁获取公平性上的表现
  • 谷歌浏览器 下载Google Chrome 安装教程
  • 移动端体验度量方法
  • 游戏社交功能好友系统与实时聊天
  • 微信二次开发时客户标签不要一开始做太复杂
  • 中望CAD机械版2026 保姆级安装教程