在主函数中输入n及n个学生的信息(包括学号,姓名,成绩),调用函数按照成绩从高到低的顺序进行排序,最后在主函数中输出排序后的学生信息。void sort(struct student *p,int n)
时间: 2024-03-24 22:41:21 浏览: 87
c语言,学生成绩管理系统
好的,我明白了。以下是对应的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
int id;
char name[20];
int score;
};
void sort(struct student *p, int n);
int main() {
int n;
struct student *stu;
printf("请输入学生数量n:");
scanf("%d", &n);
stu = (struct student *)malloc(sizeof(struct student) * n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息(学号、姓名、成绩):\n", i + 1);
scanf("%d%s%d", &stu[i].id, stu[i].name, &stu[i].score);
}
sort(stu, n);
printf("排序后的学生信息:\n");
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", stu[i].id, stu[i].name, stu[i].score);
}
free(stu);
return 0;
}
void sort(struct student *p, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (p[j].score < p[j + 1].score) {
struct student tmp = p[j];
p[j] = p[j + 1];
p[j + 1] = tmp;
}
}
}
}
```
以上代码中,我们定义了一个结构体 `student`,包含了学生的学号、姓名和成绩信息。在主函数中,我们先读入学生数量 `n`,然后动态分配 `n` 个 `student` 结构体的内存空间,读入每个学生的信息,最后调用 `sort` 函数进行排序。排序函数使用冒泡排序算法,按照成绩从高到低排序。排序完成后,我们再次遍历结构体数组,输出排序后的学生信息。
注意,以上代码中不包含对输入数据的合法性检查,实际应用中需要根据具体情况进行相应的检查和处理。
阅读全文