解题思路://如果能把日期转换成整数,比较大小就比较方便了,排序就好操作和理解了
//每一个日期的时间 ==( 年份 * 12 + 月份-1)* 31 + 天数
//其实月份可以不减一,也可以乘以30,这都无所谓,主要是好理解
注意事项://打印输出的时候,需要注意月份和天数小于10天的时候,需要加上前导0
参考代码:#include
typedef struct mytime{
int year;
int month;
int day;
} TIME;
long time_all(TIME a){ //此函数的目的是将日期装换成整数,用于排序是的比较
long x = (a.year * 12 + a.month) * 31 + a.day;
return x;
}
int main(void){
TIME list[100]; //结构体数组,用于保存输入的数据
int i= 0;
while(1){
if(EOF != scanf("%d/%d/%d",&list[i].month,&list[i].day,&list[i].year))
i++;
else break;
}
//循环结束后,i 的值,就是输入的日期的个数
//这里开始排序,我使用了简单的选择排序,可以用其它方法
int j,k;
int min;
TIME tmp;
for(j = 0;j
min = j;
for(k = j+1;k
if(time_all(list[k])
min = k;
}
}
if(min != j){
tmp = list[j];
list[j] = list[min];
list[min] = tmp;
}
}
//这里是格式化输出
for(j = 0;j
if(list[j].month
else printf("%d/",list[j].month);
if(list[j].day
else printf("%d/",list[j].day);
printf("%d\n",list[j].year);
}
return 0;
}