题解 | #最小年龄的3个职工#
最小年龄的3个职工
https://www.nowcoder.com/practice/a9fa482eb05149cdbad88689e3cb5f66
#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; }