明日复明日

明日复明日

2024年GESP一级模拟题,日期、时间计算题。

luogu-B3993

题目要求

描述

给定一个日期,要求输出它的后一天的日期。假设今年不是闰年。

输入包括两个整数,分别表示月份和日期。你需要编写一个程序来计算并输出这个日期的后一天。如果输入的日期是年末的最后一天(12 月 31 日),则需要输出下一年的 1 月 1 日。

输入

输入只有一行,包括两个整数,分别表示月份 M 和日期 D 。

  • M 是一个整数,表示月份(1≤M≤12)。
  • D 是一个整数,表示日期(1≤D≤31,且不大于当月的最大天数)。

输出

输出一行,包含两个整数,分别表示后一天的月份和日期。

输入样例-1

3
14

输出样例-1

3
15

输入样例-2

4
30

输出样例-2

5
1

输入样例-3

12
31

输出样例-3

1
1


题目分析

【GESP】C++一级真题练习(202303)luogu-B3835,每月天数类似,分月处理最后一天的情况即可。

详见代码注释。

示例代码

#include <iostream>
using namespace std;

int main() {
    int month, day; // 定义月份和日期变量
    cin >> month >> day; // 从输入流中读取月份和日期

    // 处理2月28日的情况
    if (month == 2 && day == 28) {
        month += 1; // 进入下一个月
        day = 0; // 日期重置为1
    }
    // 处理1、3、5、7、8、10月31日的情况
    if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
         month == 10) &&
        day == 31) {
        month += 1; // 进入下一个月
        day = 0; // 日期重置为1
    }
    // 处理12月31日的情况
    if (month == 12 && day == 31) {
        month = 1; // 进入下一年的1月
        day = 0; // 日期重置为1
    }
    // 处理4、6、9、11月30日的情况
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 30) {
        month += 1; // 进入下一个月
        day = 1; // 日期设置为1
    } else {
        day += 1; // 其他情况下,日期加1
    }
    cout << month << " " << day; // 输出结果
    return 0;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on