【题解】日期排序
【题目描述】
有一些日期,日期格式为“MM/DD/YYYY”。编程将其按日期大小排列。
【输入描述】
无
【输出描述】
无
【样例输入】
15/12/1999 10/21/2003 10/22/2003 02/12/2004 11/30/2005 12/31/2005
【样例输出】
15/12/1999 10/21/2003 10/22/2003 02/12/2004 11/30/2005 12/31/2005
【题目分析】
仔细看的话日期不符合正常认知,但是不影响做题。
日期按大小排序,从样例可以看出是从小到大排序。
可以用结构体吧年月日全部存起来,然后用前面学过的sort函数进行比较。 sort函数的具体用法参考。
题目中并没有说明有多少组数据,属于不确定长度输入一类。
【参考代码】
#include<bits/stdc++.h> using namespace std; //定义结构体函数 struct data { int day; //日 int month; // 月 int year; //年 }d[100]; bool cmp(struct data x, struct data y) { if(x.year!=y.year) return x.year<y.year; //年份不相同,就先排年份 if(x.month!=y.month) return x.month<y.month; //月份不相同,就排月份 if(x.day!=y.day) return x.day<y.day; //日不相同,就排日 } int main() { int i = 0; while(scanf("%d/%d/%d", &d[i].month, &d[i].day, &d[i].year) != EOF) //读入数据 { i++; } sort(d, d + i, cmp); //排序函数 for (int j = 0; j < i; j++) { printf("%02d/%02d/%d\n", d[j].month, d[j].day, d[j].year); } }
(adsbygoogle = window.adsbygoogle || []).push({});