用C语言写一个基于结构体数据中某一种数据的排序函数
时间: 2024-03-01 09:51:22 浏览: 21
好的,下面是一个用 C 语言实现基于结构体数据中某一种数据的排序函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 50 // 定义字符串的最大长度
// 定义一个结构体类型
typedef struct {
char name[MAX_LEN];
int age;
float score;
} Student;
// 比较函数,按照学生的年龄从小到大排序
int cmp_age(const void *a, const void *b) {
return ((Student *)a)->age - ((Student *)b)->age;
}
// 比较函数,按照学生的分数从大到小排序
int cmp_score(const void *a, const void *b) {
return ((Student *)b)->score - ((Student *)a)->score;
}
int main() {
Student stu[5] = {{"Tom", 20, 80}, {"Jerry", 18, 90}, {"John", 22, 70}, {"Mike", 19, 85}, {"Lisa", 21, 75}};
int i;
// 按照年龄排序
qsort(stu, 5, sizeof(Student), cmp_age);
printf("按照年龄从小到大排序:\n");
for (i = 0; i < 5; i++) {
printf("姓名:%s,年龄:%d,成绩:%.2f\n", stu[i].name, stu[i].age, stu[i].score);
}
// 按照分数排序
qsort(stu, 5, sizeof(Student), cmp_score);
printf("\n按照分数从大到小排序:\n");
for (i = 0; i < 5; i++) {
printf("姓名:%s,年龄:%d,成绩:%.2f\n", stu[i].name, stu[i].age, stu[i].score);
}
return 0;
}
```
在这个示例代码中,我们定义了一个 `Student` 结构体类型,包含了每个学生的姓名、年龄和成绩三个属性。然后,我们分别定义了两个比较函数 `cmp_age` 和 `cmp_score`,前者按照年龄从小到大排序,后者按照分数从大到小排序。最后,我们使用 `qsort` 函数进行排序,并输出排序结果。