【GESP真题解析】第 4 集 GESP一级 2023 年 3 月编程题 1:每月天数
大家好,我是莫小特。
这篇文章给大家分享 GESP 一级 2023 年 3 月编程题第 1 题:每月天数。
题目链接
洛谷链接:B3835 每月天数
一、完成输入
根据题目要求,我们需要输入两个整数,分别表示一个日期的年份和月份。
年份 A 的范围在 2000 到 3000 之间,月份 B 的范围在 1 到 12 之间。
用 cin 就可以实现。
int A, B;
cin >> A >> B; // 输入年份和月份
完成输入后,我们就要对题目进行分析,写算法代码。
二、分析题意
根据题目要求,我们计算给定年份和月份对应的天数。
考虑到闰年对2月天数的影响,我们首先需要判断年份是否为闰年。
闰年判断:
(1)能被400整除的是闰年。
(2)能被4整除且不能被100整除的也是闰年。
bool isrun = false; // 闰年条件// 判断年份是否为闰年
if ((A % 400 == 0) || ((A % 100 != 0) && (A % 4 == 0)))
{isrun = true; // 符合闰年条件
}
每月天数:
- 一月(1月):31天
- 二月(2月):28天(平年),29天(闰年)
- 三月(3月):31天
- 四月(4月):30天
- 五月(5月):31天
- 六月(6月):30天
- 七月(7月):31天
- 八月(8月):31天
- 九月(9月):30天
- 十月(10月):31天
- 十一月(11月):30天
- 十二月(12月):31天
// 判断月份的天数
if (B == 1 || B == 3 || B == 5 || B == 7 || B == 8 || B == 10 || B == 12)
{cout << 31 << endl; // 31天的月份
}
else if (B == 4 || B == 6 || B == 9 || B == 11)
{cout << 30 << endl; // 30天的月份
}
再加上闰年的判断。
else if (isrun == true)
{cout << 29 << endl; // 闰年的2月29天
}
else
{cout << 28 << endl; // 非闰年的2月28天
}
三、验证数据
提交到网站中,通过!
四、完整代码
完整代码如下:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;int main()
{int A, B;cin >> A >> B; // 输入年份和月份bool isrun = false; // 闰年条件// 判断年份是否为闰年if ((A % 400 == 0) || ((A % 100 != 0) && (A % 4 == 0))){isrun = true; // 符合闰年条件}// 判断月份的天数if (B == 1 || B == 3 || B == 5 || B == 7 || B == 8 || B == 10 || B == 12){cout << 31 << endl; // 31天的月份}else if (B == 4 || B == 6 || B == 9 || B == 11){cout << 30 << endl; // 30天的月份}else if (isrun == true){cout << 29 << endl; // 闰年的2月29天}else{cout << 28 << endl; // 非闰年的2月28天}return 0;
}
如果对你有帮助,感谢点赞关注收藏哦~