C++ 计算日期后n天 日期计算程序代码
C++ 计算日期后n天
本程序使用C++语言编写,用于计算给定日期之后n天的日期。
输入
输入包含多组测试数据。首先输入一个正整数n,表示测试数据的组数 (1 <= n <= 100)。 此后每行输入四个正整数,表示给定日期的年月日以及延后的天数。
输出
每组给定日期延后特定天数的日期。
C++ 代码
#include <iostream>
using namespace std;
bool isLeapYear(int year) {//判断是否为闰年
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int monthDays(int year, int month) {//计算每个月份的天数
if (month == 2) {
if (isLeapYear(year)) {
return 29;
} else {
return 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
void nextDate(int& year, int& month, int& day, int n) {//计算n天后的日期
while (n > 0) {//每次循环处理一天
day++;//日期加1
if (day > monthDays(year, month)) {//如果日期超过当月天数
month++;//月份加1
day = 1;//日期置为1
if (month > 12) {//如果月份超过12
year++;//年份加1
month = 1;//月份置为1
}
}
n--;//处理完一天,n减1
}
}
int main() {
int n, year, month, day, count = 1;//count用来记录测试数据的编号
cin >> n;
while (n--) {
cin >> year >> month >> day;
int k;
cin >> k;
nextDate(year, month, day, k);//计算k天后的日期
cout << "Case " << count++ << ": " << year << "-" << (month < 10 ? "0" : "") << month << "-" << (day < 10 ? "0" : "") << day << endl;
}
return 0;
}
代码解释
isLeapYear(int year)函数用于判断给定年份是否为闰年。monthDays(int year, int month)函数用于计算给定年份和月份的天数。nextDate(int& year, int& month, int& day, int n)函数用于计算给定日期之后n天的日期。main()函数用于读取输入数据,调用nextDate()函数计算日期,并输出结果。
例子
输入:
2 2023 5 19 2 2024 2 28 1
输出:
Case 1: 2023-05-21 Case 2: 2024-03-01
总结
本程序可以用于计算任何给定日期之后n天的日期,方便用户进行日期计算。
原文地址: https://www.cveoy.top/t/topic/oFYM 著作权归作者所有。请勿转载和采集!