输入第一行包括1个整数N,3<=N<=30,代表输入数据的个数。 接下来的N行有N个职工的信息: 包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
可能有多组测试数据,对于每组数据, 输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。 关键字顺序:年龄>工号>姓名,从小到大。
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 <stdio.h>
#include<string.h>
typedef struct emp{
int no;
char name[100];
int age;
} emp;
void sort(emp e[],int n){
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
int temp=strcmp(e[j].name,e[j+1].name);
if(temp>0){
emp t=e[j];
e[j]=e[j+1];
e[j+1]=t;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
int temp=e[j].no-e[j+1].no;
if(temp>0){
emp t=e[j];
e[j]=e[j+1];
e[j+1]=t;
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){
int temp=e[j].age-e[j+1].age;
if(temp>0){
emp t=e[j];
e[j]=e[j+1];
e[j+1]=t;
}
}
}
}
int main() {
int n;
scanf("%d ",&n);
emp e[n];
int no,age;
char a[100];
int len=0;
while(scanf("%d %s %d",&no,a,&age)!=EOF){
e[len].age=age;
strcpy(e[len].name, a);
e[len].no=no;
len++;
}
sort(e,n);
int min=n>3?3:n;
for(int i=0;i<min;i++){
printf("%d %s %d\n",e[i].no,e[i].name,e[i].age);
}
return 0;
}