用结构体实现输入4个学生的学号(无符号整数)、姓名(字符串)和考试成绩(整数),然后按从高分到低分的顺序排列后输出。
时间: 2024-02-05 08:04:52 浏览: 158
以下是一个可能的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 20
#define MAX_STUDENT_COUNT 4
typedef struct {
unsigned int id;
char name[MAX_NAME_LENGTH];
int score;
} Student;
int main() {
Student students[MAX_STUDENT_COUNT];
for (int i = 0; i < MAX_STUDENT_COUNT; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%u", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩:");
scanf("%d", &students[i].score);
}
// 冒泡排序
for (int i = 0; i < MAX_STUDENT_COUNT - 1; i++) {
for (int j = 0; j < MAX_STUDENT_COUNT - 1 - i; j++) {
if (students[j].score < students[j+1].score) {
// 交换
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
// 输出按成绩从高到低排列的学生信息
printf("按成绩从高到低排列的学生信息如下:\n");
for (int i = 0; i < MAX_STUDENT_COUNT; i++) {
printf("学号:%u,姓名:%s,成绩:%d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
在这个实现中,我们定义了一个结构体 `Student`,包含了学生的学号、姓名和成绩三个字段。然后使用一个数组 `students` 来存储输入的学生信息。输入使用了一个循环,循环4次,每次输入一个学生的信息。排序使用了冒泡排序,按成绩从高到低排列。最后使用循环输出按成绩从高到低排列的学生信息。
阅读全文