本文主要是介绍【晴问算法】入门篇—日期处理—日期先后,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定两个日期DAY1和DAY2,判断DAY1是否在DAY2之前。
输入描述
前两行分别为日期DAY1和DAY2(格式为YYYY-MM-DD,范围为1900-01-01≤DAY≤2199-12-31),数据保证一定合法。
输出描述
如果DAY1在DAY2之前,那么输出YES,否则输出NO.
样例1
输入
2021-05-012021-05-07
输出
YES
样例2
输入
2021-05-012021-05-01
输出NO
样例3
输入
2021-05-012021-04-12
输出
NO
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int f[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//存月份天数,为什么开辟13呢,让f[0]=0,使数组下标和月份一一对应
struct data{//涉及到日期的都定义结构体int year;int month;int day;
};
bool cmp(data p1, data p2){if(p1.year != p2.year){//年份不同时返回小的return p1.year < p2.year;}if(p1.month != p2.month){//年份相同,月份不同时,返回月份小的return p1.month < p2.month;}return p1.day < p2.day;//年月都相同,返回日期小的
}int main() {struct data p1, p2;//data类型的p变量scanf("%04d-%02d-%02d",&p1.year,&p1.month,&p1.day);//按照题目的格式输入04d表示年份占四位scanf("%04d-%02d-%02d",&p2.year,&p2.month,&p2.day);//按照题目的格式输入04d表示年份占四位printf(cmp(p1,p2) ? "YES" : "NO");//巧用三元判断 满足cmp就输出yesreturn 0;
}
这篇关于【晴问算法】入门篇—日期处理—日期先后的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!