题解 P5716 【【深基3.例9】月份天数】

前言

其实这题目就是一个模拟题,数组什么的都不需要,你只需要会c++基础赋值,判断,读入,输出,就可以做这题目。

至于为什么要写这篇题解,那是因为,我想让初学者更好的了解思路。

题意

就是给你年份和月份,输出这一年的这一月有多少天。

还需要判闰年。

分析和解决

其实很简单

1 3 5 7 8 10 12 永远是 31 天

4 6 9 11 永远是 30 天

最主要的就是 2月份 如果是闰年,那么就是 29 天。

如果不是,那么就是 28 天。

至于闰年的判断方式,就是能被 400 整除的是闰年,或者是能被 4 整除,不能被 100 整除。

这个判断好了之后,100 分就到手了。

如果还是不知道的或者想了解为什么有闰年的存在:

请自行翻二年级下册的数学课本,请自行百度。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
// freopen("Leap.in","r",stdin); 文件输入输出,洛谷评测器不需要,这个可以不用
// freopen("Leap.out","w",stdout);
long long n,m;//变量设定
scanf("%lld %lld",&n,&m);//格式化输入输出,cin和cout可以替代
if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) {printf("31\n");return 0;}//如上文字 1 3 5 7 8 10 12 都是31天
if (m==4 || m==6 || m==9 || m==11) {printf("30\n");return 0;}//如上文字 4 6 9 11都是30天
if ((n%400==0 || (n%4==0 && n%100!=0)) && m==2)
{
printf("29\n");//如果是闰年那么输出29天
return 0;
}//如果是2月份那么判断,上面的文字已告诉你怎么判断
else printf("28\n");//如果不是那么输出28天
return 0;
}

写在后面的话

我这篇题解如果有错误,那么请在评论区里留言,作者将会很感谢反映的人。

-------- 本文结束 感谢阅读 --------