C语言结构体数组排序举例(学生成绩排名输出姓名
时间: 2024-09-19 08:04:27 浏览: 112
在C语言中,我们可以使用结构体数组来存储学生的成绩信息,并通过自定义比较函数来对学生成绩进行排序。这里我们假设有一个名为`Student`的结构体,包含`name`(姓名)和`score`(成绩)两个字段。
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[50];
int score;
} Student;
// 比较函数,用于升序排列
int compareStudents(const void *a, const void *b) {
const Student *s1 = a, *s2 = b;
return s1->score - s2->score; // 如果score越高排在前面
}
int main() {
// 创建学生结构体数组
Student students[] = {
{"张三", 95},
{"李四", 88},
{"王五", 99},
{"赵六", 85}
};
// 数组元素个数
int num_students = sizeof(students) / sizeof(students[0]);
// 使用qsort函数对数组进行排序
qsort(students, num_students, sizeof(Student), compareStudents);
// 打印排序后的学生名和分数
for (int i = 0; i < num_students; i++) {
printf("%s: %d\n", students[i].name, students[i].score);
}
return 0;
}
```
在这个例子中,`qsort`函数利用了`compareStudents`作为比较键,将数组按成绩从高到低排序。然后遍历并打印出排序后的学生姓名和分数。
阅读全文