使用C按照输入输出格式要求,根据程序模板将代码补充完整。求出Student数组中学生的最高平均分和最低平均分,并从高分到低分对数组重新排序,输出排序后的学生信息。 输入 先输入3个课程号,然后逐次输入4位学生的信息。 输出 按照格式输出最高分,最低分,以及排序后的结果。
时间: 2024-03-19 20:40:12 浏览: 17
下面是使用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 1000
// 定义学生结构体
struct Student {
char name[20]; // 学生姓名
int score[3]; // 三门课程的成绩
double average; // 平均分
};
// 比较函数,用于排序
int cmp(const void *a, const void *b) {
struct Student *p = (struct Student *)a;
struct Student *q = (struct Student *)b;
return q->average > p->average;
}
int main() {
int n = 4; // 学生数
int m = 3; // 课程数
int course[m]; // 三门课程的课程号
struct Student stu[MAXN]; // 学生数组
double max_average = 0.0, min_average = 100.0; // 最高平均分和最低平均分
// 输入课程号
printf("请输入三门课程的课程号:\n");
for (int i = 0; i < m; i++) {
scanf("%d", &course[i]);
}
// 输入学生信息
printf("请逐次输入四位学生的信息:\n");
for (int i = 0; i < n; i++) {
printf("请输入第%d位学生的姓名:", i + 1);
scanf("%s", stu[i].name);
stu[i].average = 0.0;
for (int j = 0; j < m; j++) {
printf("请输入%s的%s成绩:", stu[i].name, course[j]);
scanf("%d", &stu[i].score[j]);
stu[i].average += stu[i].score[j];
}
stu[i].average /= m;
if (stu[i].average > max_average) {
max_average = stu[i].average;
}
if (stu[i].average < min_average) {
min_average = stu[i].average;
}
}
// 排序
qsort(stu, n, sizeof(struct Student), cmp);
// 输出结果
printf("最高平均分为:%.2lf\n", max_average);
printf("最低平均分为:%.2lf\n", min_average);
printf("排序后的学生信息为:\n");
for (int i = 0; i < n; i++) {
printf("%s\t", stu[i].name);
for (int j = 0; j < m; j++) {
printf("%d\t", stu[i].score[j]);
}
printf("%.2lf\n", stu[i].average);
}
return 0;
}
```
程序的主要思路是定义一个`Student`结构体表示学生信息,然后输入三门课程的课程号和四位学生的信息,并计算每个学生的平均分,求出最高平均分和最低平均分,最后按照平均分从高到低对学生进行排序,并输出排序后的结果。