定义一个结构体student,存储5名学生的学号,姓名,成绩,并按照成绩从高到低排序
时间: 2024-11-30 13:29:18 浏览: 72
在C语言中,你可以定义一个结构体(struct)来表示学生的信息,包括学号、姓名和成绩。为了按成绩从高到低排序,你需要创建一个结构体数组,并配合使用指针和自定义的比较函数。这里是一个例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
typedef struct {
int id;
char name[50];
float score;
} Student;
// 自定义比较函数,用于分数排序
int compare_students(const void *a, const void *b) {
const Student *sa = a;
const Student *sb = b;
return sb->score - sa->score; // 降序排列
}
int main() {
// 学生信息数组,假设最多5名学生
Student students[5] = {
{1, "张三", 90},
{2, "李四", 88},
{3, "王五", 92},
{4, "赵六", 85},
{5, "刘七", 87}
};
// 对数组进行qsort排序
qsort(students, sizeof(students) / sizeof(Student), sizeof(Student), compare_students);
// 输出排序后的学生信息
for (int i = 0; i < 5; i++) {
printf("学号: %d, 姓名: %s, 成绩: %.2f\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
在这个示例中,我们使用了标准库函数`qsort`对结构体数组进行排序,通过传入自定义的`compare_students`函数来进行降序排列。注意,`qsort`需要一个指向元素的指针,以及元素的大小等信息。
阅读全文