Titulo
Hay información de n estudiantes (incluyendo número de estudiante, nombre y calificaciones). Escriba una función para generar la información de los estudiantes en orden de mayor a menor.
Formato de entrada:
Ingrese un número entero positivo n (n <50) e ingrese la información de n estudiantes en las n filas siguientes, incluyendo: número de estudiante, nombre y calificaciones.
Formato de salida:
Salida de información del alumno ordenada de mayor a menor, incluida la identificación del alumno, el nombre y las calificaciones.
Entrada de muestra:
Aquí hay un conjunto de entradas. Por ejemplo:
. 3
101 Zhang 78
102 Wang 91 es
103 de Li 85
Salida de muestra:
102 Wang
91103 Li
85101 Zhang 78
#include<stdio.h>
struct Stu
{
int num;
char name[50];
int score;
};
int main()
{
struct Stu s[50], * a[50];
struct Stu* t, ** p;
int i,j;
int n;
scanf("%d", &n);
for (i = 0; i < n; ++i)
scanf("%d%s%d", &s[i].num, s[i].name, &s[i].score);
for (i = 0; i < n; ++i)
a[i] = &s[i];
for (i = 0; i < n-1; ++i)
{
p = a + i;
for (j = i + 1; j < n; ++j)
if ((*p)->score < a[j]->score)
p = a + j;
if (p != a + j)
{
t = *p;
*p = a[i];
a[i] = t;
}
}
for (i = 0; i < n; ++i)
printf("%d %s %d\n", a[i]->num, a[i]->name, a[i]->score);
return 0;
}