202303-每月天数(luogu-B3835)
GESP一级真题练习。为2023年3月一级认证真题。
luogu-B3835 每月天数
题目要求
描述
小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编程方法求出给定的月份有多少天。你能做到吗?
输入
输入一行,包含两个整数 ,分别表示一个日期的年、月。约定 ,。
输出
输出一行,包含一个整数,表示输入月份有多少天。
输入样例-1
2022 1
输出样例-1
31
输入样例-2
2020 2
输出样例-2
29
题目分析
根据题目描述,我们可以分析出以下解题思路:
输入处理:
- 读入两个整数 A 和 B,分别表示年份和月份。
判断月份天数:
- 对于 1, 3, 5, 7, 8, 10, 12 月,天数为 31 天。
- 对于 4, 6, 9, 11 月,天数为 30 天。
- 对于 2 月,需要判断是否为闰年:
- 如果是闰年,2 月有 29 天。
- 如果是平年,2 月有 28 天。
闰年判断:
- 闰年的条件:能被 4 整除但不能被 100 整除,或者能被 400 整除。
输出结果:
- 根据判断结果,输出对应月份的天数。
这道题目涉及了以下知识点:
- 输入输出操作
- 条件判断(if-else 语句)
- 闰年的判断条件
- 月份天数的判断逻辑
示例代码
#include <iostream>
using namespace std;
int main() {
// 定义年份和月份变量
int year, month;
// 从标准输入读取年份和月份
cin >> year >> month;
// 判断月份天数
// 31天的月份:1,3,5,7,8,10,12月
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
month == 10 || month == 12) {
cout << 31;
}
// 30天的月份:4,6,9,11月
else if (month == 4 || month == 6 || month == 9 || month == 11) {
cout << 30;
}
// 2月特殊处理:需要判断是否闰年
else if (month == 2) {
// 闰年判断:能被4整除但不能被100整除,或者能被400整除
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
cout << 29; // 闰年2月29天
} else {
cout << 28; // 平年2月28天
}
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on