P1104 生日-------题目来源于洛谷

题目描述
cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。
输入格式
有2行,
第1行为OI组总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。
输出格式
有n行,
即n个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
输入输出样例
输入 #1

3
Yangchu 1992 4 23
Qiujingya 1993 10 13
Luowen 1991 8 1

输出 #1

Luowen
Yangchu
Qiujingya

说明/提示
数据规模
1<n<100
length(s)<20

#include<stdio.h>
#include<string.h>
struct xin
{
	char name[20];
	int nian,yue,ri;
};
int main ()
{
	int n,i,j=0,t,k=0;
	char dai[20];
	struct xin xi[101];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s %d %d %d",xi[i].name,&xi[i].nian,&xi[i].yue,&xi[i].ri);
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(xi[i].nian>xi[j].nian)
			{
				strcpy(dai,xi[i].name);
				strcpy(xi[i].name,xi[j].name);
				strcpy(xi[j].name,dai);
				t=xi[i].nian;
				xi[i].nian=xi[j].nian;
				xi[j].nian=t;
				t=xi[i].yue;
				xi[i].yue=xi[j].yue;
				xi[j].yue=t;
				t=xi[i].ri;
				xi[i].ri=xi[j].ri;
				xi[j].ri=t;
			}
			else if(xi[i].nian==xi[j].nian)
			{
				if(xi[i].yue>xi[j].yue)
				{
					strcpy(dai,xi[i].name);
					strcpy(xi[i].name,xi[j].name);
					strcpy(xi[j].name,dai);
					t=xi[i].yue;
					xi[i].yue=xi[j].yue;
					xi[j].yue=t;
					t=xi[i].ri;
					xi[i].ri=xi[j].ri;
					xi[j].ri=t;
				}
				else if(xi[i].yue==xi[j].yue)
				{
					if(xi[i].ri>=xi[j].ri)
					{
						strcpy(dai,xi[i].name);
						strcpy(xi[i].name,xi[j].name);
						strcpy(xi[j].name,dai);
						t=xi[i].ri;
						xi[i].ri=xi[j].ri;
						xi[j].ri=t;
					}
				}
			}
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%s\n",xi[i].name);
	}
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值