青少年编程知识记录 codecoming

【题解】日期排序

【题目描述】

有一些日期,日期格式为“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({});

作者:亿万年的星光 分类:题解目录 浏览: