有关结构体排序的问题
我定义了一个 结构体 数组 里面有50名学生的 学号 姓名 成绩 然后如果我按照学生的成绩 进行降序排序 那么我应该怎么做的 是不是应该 用成绩来进行冒泡排序 然后在交换的时候交换三次 把 学号和姓名也交换呢
程序代码:#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[10];
int id;
int score;
} Student;
int cmp(const void* p1, const void* p2)
{
return ((Student*)p2)->score - ((Student*)p1)->score;
}
void print_students(Student* students, int size)
{
int i;
for (i = 0; i < size; ++i)
printf("%s %d %d\n", students[i].name, students[i].id, students[i].score);
putchar('\n');
}
int main(void)
{
Student students[] = {
"小明", 1, 60,
"小红", 2, 61,
"小白", 3, 62,
"小东", 4, 59,
"小西", 5, 90,
"小南", 6, 11,
"小北", 7, 12,
};
print_students(students, sizeof students / sizeof *students);
qsort(students, sizeof students / sizeof *students, sizeof *students, cmp);
print_students(students, sizeof students / sizeof *students);
return 0;
}
