#include<stdio.h> #include <stdlib.h> struct Student{ int id; char name[1000]; int score; }; void main() { typedef struct Student Stu; int n,i,j; scanf("%d",&n); Stu a[n]; for(i=0;i<n;i++){ Stu* s = (Stu*)malloc(sizeof(Stu)); scanf("%d",&s->id); scanf("%s",s->name); scanf("%d",&s->score); a[i] = *s; free(s); } //冒泡排序 for(i=1;i<=n-1;i++){ for(j=0;j<=n-2;j++){ if(a[j].score < a[j+1].score){ Stu temp; temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; }else if(a[j].score == a[j+1].score){ if(a[j].id>a[j+1].id){ Stu temp; temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } } for(i=0;i<n;i++){ printf("%d %s %d\n",a[i].id,a[i].name,a[i].score); } } /************************************************************** Problem: 1414 User: admin Language: C Result: Accepted Time:15 ms Memory:1144 kb ****************************************************************/