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天的日期,方便用户进行日期计算。

C++ 计算日期后n天 日期计算程序代码

原文地址: https://www.cveoy.top/t/topic/oFYM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录