P1-104
欢迎进入@shuai:生日;
题目描述
sxq同学想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但sxq最近作业很多,没有时间,所以请你帮她排序。
输入输出格式
输入格式:
有2行,
第1行为OI组总人数nn;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。
输出格式:
有n行,
即n个生日从大到小同学的姓名。(如果有两个同学生日相同,输入靠后的同学先输出)
输入输出样例
输入样例#1:
3
Yangchu 1992 4 23
Songxiqun 1999 10 13
Luowen 1991 8 1
输出样例#1:
Luowen
Yangchu
Songxiqun
1<n<100
length(s)<20
源代码来了,,,,
#include<stdio.h>
struct people{
int number;
int year,month,day;
char name[20];
}a[110],t;
main()
{
int n,i,j;
scanf("%d",&n);;
for(i=0;i<n;i++){
scanf("%s %d %d %d",&a[i].name,&a[i].year,&a[i].month,&a[i].day);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i].year>a[j].year||(a[i].year==a[j].year&&a[i].month>a[j].month)||(a[i].year==a[j].year&&a[i].month==a[j].month&&a[i].day>a[j].day)||(a[i].year==a[j].year&&a[i].month==a[j].month&&a[i].day==a[j].day&&a[i].number>a[j].number)){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<=n;i++){
printf("%s\n",a[i].name);
}
}
代码解释:
- ~~周末也要加油鸭、、,一道简单的结构体排序来了,
- 思路:排序,排序,还是排序……
- 本蒟蒻表示这道题挺适合刚学结构体的同学的,纯c语言呦
- 先用结构体存下每一个人的姓名,出生年,月,日与每个人输入的编号,,优先度为:年 -> 月 -> 日 -> 编号,注意年月日都相同时编号从大到小输出,最后再来一个选排,
悄悄告诉你可以AC的,楼主亲测
源代码图片及运行图片如下
在这里插入图片描述
QAQ
推荐相关题目:
平台:https://www.luogu.org/problemnew/show/P1105
学生分组:https://www.luogu.org/problemnew/show/P1109
笨小猴:https://www.luogu.org/problemnew/show/P1125
发现错误,疑惑不解,联系作者:1939096278@qq.com
欢迎联系呦 -------- QAQ ---------;