P8651 [P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用
- 题目
- 分析
- 代码
题目

分析
代码中巧妙的用到3重循环,完美的解决了输出的顺序问题【题目要求从小到大】
需要注意的是2月的值,在不同的年份中应该更新2月的值
还有就是最后的3个if【T^T,我一开始写的3个if语句】,要么改成else if,要么把判定的条件改成用“||”连接【害我看半天T^T】,不然用3个if回导致重复输出
代码
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits> // 包含INT_MAX常量
#include <cctype>
using namespace std;
int month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int check(int x) {
return (x % 4 == 0 && x % 100 != 0) || (x % 400 == 0);
}
int main() {
int a, b, c;
scanf("%d/%d/%d", &a, &b, &c);
//循环从早到晚,巧妙满足了题目要求的从早到晚排列
for (int year = 1960; year <= 2059; year++) {
if (check(year))
month[2] = 29;
else
month[2] = 28;
for (int mth = 1; mth <= 12; mth++) {
for (int day = 1; day <= month[mth]; day++) {
if (a == year % 100 && b == mth && day == c)
printf("%d-%02d-%02d\n", year, mth, day);
else if (a == mth && b == day && c == year % 100 )
printf("%d-%02d-%02d\n", year, mth, day);
else if (a == day && b == mth && c == year % 100 )
printf("%d-%02d-%02d\n", year, mth, day);
}
}
}
return 0;
}


![[含文档+PPT+源码等]精品基于Python实现的vue3+Django计算机课程资源平台](https://img-blog.csdnimg.cn/img_convert/1db1fd4398e7d71af2a7065bb4ac76eb.png)








![P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair](https://i-blog.csdnimg.cn/direct/63909a73603a4bcd9cfa909475ccdd36.png)







