3、 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。
时间: 2024-02-01 07:15:57 浏览: 175
根据题目描述,我们可以定义一个结构体来存储学生的学号和成绩,然后定义一个函数 `fun` 来对学生记录进行排序。以下是代码实现:
```c
#include <stdio.h>
typedef struct {
int num; // 学号
int score; // 成绩
} Student;
void fun(Student s[], int n) {
int i, j;
Student temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (s[i].score < s[j].score) { // 如果前一个学生的成绩低于后一个学生的成绩
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
int main() {
Student s[] = {
{201801, 90},
{201802, 85},
{201803, 95},
{201804, 80},
{201805, 88}
};
int n = 5;
int i;
printf("排序前:\n");
for (i = 0; i < n; i++) {
printf("%d %d\n", s[i].num, s[i].score);
}
fun(s, n);
printf("排序后:\n");
for (i = 0; i < n; i++) {
printf("%d %d\n", s[i].num, s[i].score);
}
return 0;
}
```
以上代码中,我们先定义了一个结构体 `Student`,包含两个成员变量 `num` 和 `score`,分别表示学生的学号和成绩。然后我们定义了一个函数 `fun`,它接收两个参数:一个是学生记录的数组 `s`,另一个是数组的长度 `n`。在 `fun` 函数内部,我们使用冒泡排序的方法进行排序,最终将学生记录按照成绩从高到低排序。
在 `main` 函数中,我们先定义了一个包含 5 名学生记录的数组 `s`,然后调用 `fun` 函数对学生记录进行排序。最后,我们输出排序前后的学生记录,以验证排序是否正确。
阅读全文