学生得记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
时间: 2023-03-16 19:49:40 浏览: 183
可以使用冒泡排序或者快速排序来实现按分数高低排列学生记录的功能。
以下是使用冒泡排序的示例代码:
```c
void fun(struct student s[], int n)
{
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (s[j].score < s[j + 1].score) {
temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
}
```
其中,结构体student的定义如下:
```c
struct student {
int id; // 学号
int score; // 成绩
};
```
在主函数中,可以先读入n个学生的数据,然后调用fun函数进行排序:
```c
int main()
{
int n, i;
struct student s[MAX_N];
// 读入n个学生的数据
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d%d", &s[i].id, &s[i].score);
}
// 按分数高低排序
fun(s, n);
// 输出排序后的结果
for (i = 0; i < n; i++) {
printf("%d %d\n", s[i].id, s[i].score);
}
return 0;
}
```
阅读全文