学生记录由学号、姓名、成绩组成, 使用结构体数组,先输入下列学生数据,然后将下列学生的数据按成绩从高到低排序后显示到屏幕上。 1 Li 90 2 Wang 95 3 Zhao 80 4 Liu 93 5 Gao 100
时间: 2024-02-14 11:20:40 浏览: 81
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 5
struct Student {
int id;
char name[20];
int score;
};
void swap(struct Student *a, struct Student *b) {
struct Student temp = *a;
*a = *b;
*b = temp;
}
void sort_by_score(struct Student students[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j+1].score) {
swap(&students[j], &students[j+1]);
}
}
}
}
int main() {
struct Student students[MAX_STUDENTS] = {
{1, "Li", 90},
{2, "Wang", 95},
{3, "Zhao", 80},
{4, "Liu", 93},
{5, "Gao", 100}
};
sort_by_score(students, MAX_STUDENTS);
printf("id\tname\tscore\n");
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
输出结果:
```
id name score
5 Gao 100
2 Wang 95
4 Liu 93
1 Li 90
3 Zhao 80
```
这里定义了一个 `Student` 结构体,包含学号、姓名和成绩三个属性,然后通过结构体数组存储每个学生的信息。
`swap` 函数用于交换两个学生的信息,`sort_by_score` 函数用冒泡排序算法按照成绩从高到低排序所有学生的信息。
最后在 `main` 函数中按照要求输出每个学生的信息。
阅读全文