题目描述
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
输入描述:
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。 接下来的N行有N个职工的信息: 包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
输出描述:
可能有多组测试数据,对于每组数据, 输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。 关键字顺序:年龄>工号>姓名,从小到大。
示例1
输入
5 501 Jack 6 102 Nathon 100 599 Lily 79 923 Lucy 15 814 Mickle 65
输出
501 Jack 6 923 Lucy 15 814 Mickle 65
#include <bits/stdc++.h>
using namespace std;
struct stu
{
int age;
int no;
char name[100];
};
bool cmp(struct stu x,struct stu y)
{
if(x.age!=y.age)
return x.age<y.age;
else if(x.no!=y.no)
return x.no<y.no;
else if(strcmp(x.name,y.name)!=0)
return strcmp(x.name,y.name)<0;
else
return true;//返回true就不交换
}
int main()
{
int n,i,j;
struct stu s[100];
while(cin>>n)
{
for(i=0;i<n;i++)
cin>>s[i].no>>s[i].name>>s[i].age;
sort(s,s+n,cmp);
for(i=0;i<3;i++)
cout<<s[i].no<<" "<<s[i].name<<" "<<s[i].age<<endl;
}
}