这道问题要求在主函数中输入n个学生的信息(包括学号、姓名、成绩),调用函数按照成绩从高到低的顺序进行排序,最后在主函数中输出排序后的学生信息。
时间: 2024-03-10 16:46:30 浏览: 117
好的,这是一个关于排序的问题。首先我们需要定义一个学生结构体(包含学号、姓名和成绩),并且定义一个排序函数。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
typedef struct {
int id;
char name[20];
int score;
} Student;
void sort_students(Student *students, int n) {
int i, j;
Student temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[i].score < students[j].score) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
int main() {
int n, i;
Student students[MAX_STUDENT_NUM];
printf("请输入学生的数量:");
scanf("%d", &n);
printf("请输入学生的信息(学号、姓名、成绩):\n");
for (i = 0; i < n; i++) {
scanf("%d %s %d", &students[i].id, students[i].name, &students[i].score);
}
sort_students(students, n);
printf("按照成绩从高到低排序后的学生信息如下:\n");
for (i = 0; i < n; i++) {
printf("%d %s %d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
在这个代码中,我们首先定义了一个学生结构体,包含了学号、姓名和成绩三个成员。然后我们定义了一个排序函数,用于按照成绩从高到低的顺序对学生进行排序。在主函数中,我们先输入学生的数量,然后输入每个学生的信息,并且调用排序函数进行排序,最后输出排序后的学生信息。
需要注意的是,我们在输入姓名时使用了%s格式控制符,这个控制符可以读入一个带空格的字符串。此外,我们在定义学生结构体时使用了typedef关键字,这个关键字可以将一个结构体类型定义为一个新的类型名,方便我们使用。