【GESP】C++一级模拟luogu-B3993,明日复明日
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,每月天数类似,分月处理最后一天的情况即可。
详见代码注释。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权