【题解】日期排序
【题目描述】
有一些日期,日期格式为“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);
}
}扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。


