c语言记录时间程序代码,日期排序 (C语言代码)

解题思路://如果能把日期转换成整数,比较大小就比较方便了,排序就好操作和理解了

//每一个日期的时间  ==( 年份 * 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;

}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值