C语言中成绩单排序函数81


在现实生活中,学生们经常需要对自己的成绩单进行排序,以方便查看和分析。在C语言中,我们可以编写一个函数来实现成绩单的排序,从而简化这一任务。

首先,我们需要定义一个结构体来存储每个学生的成绩信息。这个结构体可以包括学号、姓名、课程名称和成绩等字段。

```c
typedef struct {
int id;
char name[50];
char course[50];
float grade;
} StudentRecord;
```

接下来,我们可以创建一个函数来比较两个StudentRecord结构体。这个函数将根据学生的成绩进行比较,并返回一个整数,表示第一个结构体比第二个结构体高、低或相等。

```c
int compareStudents(const StudentRecord *a, const StudentRecord *b) {
if (a->grade > b->grade) {
return 1;
} else if (a->grade < b->grade) {
return -1;
} else {
return 0;
}
}
```

最后,我们可以使用标准库函数qsort()来对一个StudentRecord结构体数组进行排序。qsort()函数需要三个参数:要排序的数组、数组元素的数量和比较函数。

```c
#include
void sortStudents(StudentRecord *students, int numStudents) {
qsort(students, numStudents, sizeof(StudentRecord), compareStudents);
}
```

通过调用sortStudents()函数,我们可以按照成绩对StudentRecord结构体数组进行排序。排序后的数组可以方便地打印或以其他方式使用。

以下是一个示例程序,演示了如何使用成绩单排序函数:

```c
#include
#include
int main() {
// 创建一个StudentRecord结构体数组
StudentRecord students[] = {
{1, "John Doe", "Math", 90.0},
{2, "Jane Smith", "Science", 85.0},
{3, "Bob Jones", "History", 95.0},
{4, "Alice Green", "English", 88.0},
{5, "Tom Brown", "Computer Science", 92.0}
};
// 计算数组的长度
int numStudents = sizeof(students) / sizeof(StudentRecord);
// 排序数组
sortStudents(students, numStudents);
// 打印排序后的数组
printf("Sorted Students:");
for (int i = 0; i < numStudents; i++) {
printf("%d %s %s %.1f", students[i].id, students[i].name, students[i].course, students[i].grade);
}
return 0;
}
```

这个程序将输出排序后的学生成绩单,成绩最高的排在最前面。

2025-01-27


上一篇:水仙花数的 C 语言函数实现

下一篇:C语言中打印函数printf()详解