1028.联系人
来源:互联网 发布:oracle和mysql的优缺点 编辑:程序博客网 时间:2024/05/29 15:19
运用结构体排序,此题能让自己对结构体排序有更加深入的了解,学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计、名次排序之类的题目了。
首先,我们应该先定义一个结构体
然后,再去定一个排序函数
最后调用进行排序就完成了
Description
手机联系人通常都可以按姓名进行排列,SYC突发奇想按年龄进行排列,但是其手头没有每个人的年龄,于是将每个联系人的生日输入进了手机。现在请你帮助SYC实现他的愿望,将给定的联系人按年龄从大到小排列(大一天也是大哦~),如果两人同年同月同日生,那么按姓名升序进行排列。
Input
第一行一个整数N,代表手机中有N个联系人。1<=N<=1000接下来的N行表示每一个联系人的信息,每一行首先是联系人的名称,然后有一个空格,之后是该联系人的生日(月/日/年)。联系人的姓名不会超过50个字符,只包含英文大写字母。生日均是合法的日期,年份为4位,月份和日期为1~2位。
Output
输出N行,每一行显示该联系人的姓名。Sample Input
5SYC 1/1/1990ZZK 3/3/1990LZC 4/4/1990LG 02/02/1990WZ 12/12/1990
Sample Output
SYCLGZZKLZCWZ
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
struct lianxi //定义结构体
{
char name[50];
int day,month,year;
}x[10000];
bool cmp(lianxi x,lianxi y) //定义排序函数
{
if(x.year==y.year)
{
if(x.month==y.month)
{
if(x.day==y.day)
{
if(strcmp(x.name,y.name)<0)
return 1;
else return 0;
}
else if(x.day<y.day)
return 1;
else if(x.day>y.day)
return 0;
}
else if(x.month<y.month)
return 1;
else if(x.month>y.month)
return 0;
}
else if(x.year<y.year)
return 1;
else if(x.year>y.year)
return 0;
}
int main() //进行排序
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
scanf("%s %d/%d/%d",&x[i].name,&x[i].month,&x[i].day,&x[i].year);
}
sort(x,x+n,cmp);
for(int i=0;i<n;i++)
{
printf("%s\n",x[i].name);
}
return 0;
}
这样就完成了!
- 1028.联系人
- 联系人
- 联系人
- 联系人
- 联系人
- 加联系人
- 修改联系人
- 获得联系人
- 同步联系人
- 联系人,来电
- 联系人 表
- android 联系人
- 联系人选择器
- 联系人ProfileProvider
- 查询联系人
- 联系人操作
- 联系人API
- android联系人
- 求1+2+3+……+n的值。
- Qt学习笔记二
- 原型
- 01字典树+贪心(顺便总结字典树模板)
- my original studying notes for readn(),writen(),and readline() function
- 1028.联系人
- nginx代理后如何获取request的真实ip
- 贪心 HDU.OJ 2037 今年暑假不AC
- [Unity][JSON][csv][JSONUnity]csv-JSON如何在CSV文件中保存数组并读取JSON数组
- linux内核USB无线网卡、USB声卡支持
- matlab simulink 仿真时出现如下错误怎么办
- Sass
- 输出一个花样桃心
- spring-cloud中eureka进行服务治理