用结构体实现输入4个学生的学号(无符号整数)、姓名(字符串)和考试成绩(整数),然后按从高分到低分的顺序排列后输出。 程序的运行示例如下: 输入第1个学生的信息:学号、姓名、成绩 2011 zhangsan 89 输入第2个学生的信息:学号、姓名、成绩 2012 lisi 96 输入第3个学生的信息:学号、姓名、成绩 2013 wangwu 67 输入第4个学生的信息:学号、姓名、成绩 2014 liuliu 59 排序后学生的信息为: 2012 lisi 96 2011 zhangsan 89 2013 wangwu 67 2014 liuliu 59
时间: 2023-12-06 13:41:31 浏览: 96
以下是用结构体实现输入4个学生的学号、姓名和考试成绩,并按照成绩从高到低排序后输出的完整程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 4
struct student {
unsigned 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(struct student students[], int num) {
for (int i = 0; i < num; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (students[j].score < students[j+1].score) {
swap(&students[j], &students[j+1]);
}
}
}
}
int main() {
struct student students[MAX_STUDENT_NUM];
// 输入学生信息
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
printf("请输入第%d个学生的信息:学号、姓名、成绩 ", i+1);
scanf("%u %s %d", &students[i].id, students[i].name, &students[i].score);
}
// 按成绩从高到低排序
sort(students, MAX_STUDENT_NUM);
// 输出排序后的学生信息
printf("排序后学生的信息为:\n");
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
printf("%u %s %d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
运行结果如下:
```
请输入第1个学生的信息:学号、姓名、成绩 2011 zhangsan 89
请输入第2个学生的信息:学号、姓名、成绩 2012 lisi 96
请输入第3个学生的信息:学号、姓名、成绩 2013 wangwu 67
请输入第4个学生的信息:学号、姓名、成绩 2014 liuliu 59
排序后学生的信息为:
2012 lisi 96
2011 zhangsan 89
2013 wangwu 67
2014 liuliu 59
```
阅读全文