用C语言输入n个学生的学号和成绩,按成绩从高到低排序后输出,n 小于50,学号小于10位。
时间: 2024-03-23 12:42:36 浏览: 52
好的,这是一个经典的排序问题,可以使用冒泡排序或快速排序来实现。这里我提供冒泡排序的实现代码:
```c
#include <stdio.h>
#define MAXN 50
struct Student {
char id[11];
int score;
} stu[MAXN];
void bubbleSort(struct Student a[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (a[j].score < a[j + 1].score) {
struct Student temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main() {
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s %d", stu[i].id, &stu[i].score);
}
bubbleSort(stu, n);
for (i = 0; i < n; i++) {
printf("%s %d\n", stu[i].id, stu[i].score);
}
return 0;
}
```
代码中,我们首先定义了一个结构体 `Student`,包含学生的学号和成绩。然后使用冒泡排序对学生数组进行排序,最后输出排序后的结果。
注意,由于题目要求学号小于10位,所以我们在结构体中把学号定义为一个长度为11的字符数组,可以保证输入的学号不会超过10位。
阅读全文