c语言结构体排序函数
时间: 2023-08-29 22:07:32 浏览: 138
以下是一个使用结构体排序的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
struct student {
char name[20];
int score;
};
// 比较函数,按照分数从高到低排序
int cmp(const void *a, const void *b) {
struct student *s1 = (struct student*)a;
struct student *s2 = (struct student*)b;
return s2->score - s1->score;
}
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
// 动态分配内存
struct student *students = (struct student*)malloc(n * sizeof(struct student));
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和分数:", i + 1);
scanf("%s %d", students[i].name, &(students[i].score));
}
// 使用qsort进行排序
qsort(students, n, sizeof(struct student), cmp);
// 输出排序结果
printf("按照分数从高到低排序的结果:\n");
for (int i = 0; i < n; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
// 释放内存
free(students);
return 0;
}
```
在上面的代码中,我们定义了一个结构体 `student`,包含学生的姓名和分数。然后,我们定义了一个比较函数 `cmp`,它比较两个学生的分数大小,并且按照分数从高到低排序。接着,我们使用 `qsort` 函数对学生数组进行排序。最后,我们输出排序后的结果。