XDOJ-文件排序

文件排序

要变得更强。
今天上课刚讲了结构体,就来玩玩啦。
问题描述
操作系统中在查找文件时会按照某个规则对文件排序,例如下图为按照文件修改日期逆序排
序(最后修改的排在最前面)。
但目前操作系统不支持同时按照多个字段进行排序。现在请你写一个程序能够同时按照修改
日期和文件大小对文件进行排序,排序规则为:

  1. 日期优先,最后修改的排在前面
  2. 当修改日期相同时,大的文件排在前面。
    输入说明

第一行为一个数字 n,n 表示共有 n 个待排序的文件, 1≤ n≤ 100。 接下来是 n
行,每行包含一个文件的修改日期和文件大小,这两个字段之间用空格分隔。
文件修改日期包含年、月、日,表示年、月、日的整数之间用“/”分隔,格式为“年/月/ 日”。年份的数值在 1960-2018
之间;月份的数值在 1-12 之间;日的数值在 1-31 之间。 文件大小是一个不超过 100000000 的整数。
输入数据中没有完全相同的日期和文件大小。

输出说明

将输入数据按题目描述的规则排序后输出,每行输出一个文件的修改日期和文件大小。

输入样例

8 2018/1/8 1024
2012/10/31 256
2014/10/29 300
2012/10/31 457
2014/10/27 512
2011/10/27 95
2014/11/3 1102
2017/11/24 1535

输出样例

2018/1/8 1024
2017/11/24 1535
2014/11/3 1102
2014/10/29 300
2014/10/27512
2012/10/31 457
2012/10/31 256
2011/10/27 95

我的代码

#include<stdio.h>
typedef struct{
	int memory;
	struct{
		int year,month,day;
	}date;
}PROFILE;
int main(){
	int n,i,j,temp1,temp2,temp3,temp4;
	PROFILE files[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d/%d/%d %d",&files[i].date.year,&files[i].date.month,&files[i].date.day,&files[i].memory);
	
	for(i=0;i<n;i++){
		for(j=0;j<n-i-1;j++){
			if(files[j].date.year<files[j+1].date.year){
				temp1=files[j].date.year;
				files[j].date.year=files[j+1].date.year;
				files[j+1].date.year=temp1;
				
				temp2=files[j].date.month;
				files[j].date.month=files[j+1].date.month;
				files[j+1].date.month=temp2;
				
				temp3=files[j].date.day;
				files[j].date.day=files[j+1].date.day;
				files[j+1].date.day=temp3;
				
				temp4=files[j].memory;
				files[j].memory=files[j+1].memory;
				files[j+1].memory=temp4;
			}
			if(files[j].date.year==files[j+1].date.year){
				if(files[j].date.month<files[j+1].date.month){
					temp2=files[j].date.month;
					files[j].date.month=files[j+1].date.month;
					files[j+1].date.month=temp2;
				
					temp3=files[j].date.day;
					files[j].date.day=files[j+1].date.day;
					files[j+1].date.day=temp3;
				
					temp4=files[j].memory;
					files[j].memory=files[j+1].memory;
					files[j+1].memory=temp4;
				}
				if(files[j].date.month==files[j+1].date.month){
					if(files[j].date.day<files[j+1].date.day){
						temp3=files[j].date.day;
						files[j].date.day=files[j+1].date.day;
						files[j+1].date.day=temp3;
				
						temp4=files[j].memory;
						files[j].memory=files[j+1].memory;
						files[j+1].memory=temp4;
					}
					if(files[j].date.day==files[j+1].date.day){
						if(files[j].memory<files[j+1].memory){
							temp4=files[j].memory;
							files[j].memory=files[j+1].memory;
							files[j+1].memory=temp4;
						}
					}
				}
				
			}
		}
	}
	
	for(i=0;i<n;i++){
		printf("%d/%d/%d %d\n",files[i].date.year,files[i].date.month,files[i].date.day,files[i].memory);
	}
} 

不过老实说,结构体数组的调用,字母真的好多好长啊!!
复制粘贴真麻烦(滑稽

PHP经典100例.,php教材实例,从基础到实践,由浅到深... 24:经典循环例子 25:for的高级运用 26:简单的函数 27:有返回值的函数 28:有默认参数的函数 29:判断整数 30:动态调用函数 31:一个简单的数组 32给数组增加元素 33初始化数组 34获取数组中的元素 35创建一个多维数组 36PHP 4.0实现表格状打印 37实现背景颜色的改变 38文件上传 39查看PHP的环境变量 40使用文件包含 41打开本地或者远程文件 42读取文件内容 43访问文件常见属性 44调用文本文件内容 45PHP判断文件是否存在 46访问文件时间属性 47创建目录函数 48浏览目录 49取得浏览器的信息 50PHP相关信息 51常用的数值判断函数 52数组排序的使用 53常用数组函数 54常用字符串函数(一) 55常用字符串函数(二) 56常用字符串函数(三) 57编码和解码函数 58常用数学函数(一) 59常用时间函数(二) 60日期检查函数 61常用时间函数(一) 62常用时间函数(二) 63程序暂停函数 64图像函数 65session函数 66拼写检查 67循环中调用函数 68转换所有的标记为PHP 69取得页面的链接 70对分查找法 71文件上传界面 72用PHP4实现顶级域名查询 73日期合法性检查 74检查一个邮政编码 75得到100个随机数字 76得到十个随机数 77分成数组 78计算星座的函数 s 79检测OICQ用户是否在线 80检测操作系统和浏览器类型 81用PHP4连接一个mysql数据库操作的演示 82//本例是用PHP4实现向一个mysql数据表添加记录, 83//本例是用PHP4实现修改一个mysql数据表 84本例是用PHP4实现删除一个mysql数据记录 85//本例是用PHP4实现向一个ODBC数据表添加记录 86//本例是用PHP4实现向一个ODBC数据表添加记录 87用户登录,注册新用户 88用COOKIE保存投票人的投票记录 89php4+mysql 留言本 90文件上传处理 91页面浏览计数器 92链接 93在线聊天 94简单的新闻公告栏 95PHP目录树演示 96访客留言本 97实现在线投票 98世纪万年历 99php挖地雷 100文件管理系统
xdoj application是一个用于竞技编程训练和练习的平台。 首先,xdoj application提供了大量的编程题库,涵盖了各种语言和难度级别。这些题目既有经典的算法问题,也有实际应用的编程挑战,可以满足不同水平的程序员的需求。通过解题,程序员可以提高自己的编程能力和算法思维。 其次,xdoj application提供了在线的程序编译和运行环境。程序员可以直接在平台上编写和测试自己的代码,无需安装任何开发工具。这大大降低了环境配置的难度,让程序员能够更加专注于解决问题本身。 另外,xdoj application还支持代码提交和评测功能。程序员可以将自己的代码提交到平台上,系统会对其进行自动评测,并给出相应的反馈和评分。这样,程序员可以及时了解自己的代码是否正确并进行相应的优化。同时,平台上也会展示其他程序员的提交和评测结果,让程序员能够学习和借鉴其他人的解决思路和代码实现。 最后,xdoj application还提供了练习和比赛等功能。程序员可以选择不同类型的练习模式,根据自己的需求进行编程训练。同时,平台也会定期举办编程比赛,供程序员们进行交流和竞争。这些比赛既能检验程序员的编程水平,也能提供一种实战的机会,加深对编程知识的理解和应用。 总之,xdoj application是一个功能齐全且用户友好的竞技编程平台,能够帮助程序员提高编程能力、锻炼算法思维,并提供交流、学习和竞争的机会。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值