有关结构体排序的问题
我定义了一个 结构体 数组 里面有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; }