定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩 2、从键盘输入10个学生的以上内容 3、输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩 4、输出三门课程的平均分数最高的学生的学号、姓名及其平均分 5、将10个学生按照平均分从高到低进行排序,输出结果,格式如下所示:
时间: 2023-12-15 16:24:40 浏览: 187
好的,以下是代码实现,注释中有详细解释:
```c
#include <stdio.h>
#include <string.h>
#define N 10 // 定义学生人数
struct student {
char id[20]; // 学号
char name[20]; // 姓名
float score[3]; // 三门课程的成绩
float average; // 平均分
};
int main() {
struct student stu[N];
int i, j, k;
float max_score; // 存放单门课程最高分
float max_average; // 存放平均分最高的学生的平均分
int max_index; // 存放平均分最高的学生在数组中的下标
struct student temp; // 用于排序时交换学生信息的临时变量
// 从键盘输入学生信息
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的学号、姓名、三门课成绩:\n", i+1);
scanf("%s%s%f%f%f", stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].average = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3; // 计算平均分
}
// 输出单门课程成绩最高的学生的学号、姓名和该门课程成绩
max_score = stu[0].score[0];
j = 0;
k = 0;
for (i = 0; i < N; i++) {
if (stu[i].score[0] > max_score) {
max_score = stu[i].score[0];
j = i;
}
if (stu[i].score[1] > max_score) {
max_score = stu[i].score[1];
j = i;
k = 1;
}
if (stu[i].score[2] > max_score) {
max_score = stu[i].score[2];
j = i;
k = 2;
}
}
printf("单门课程最高分数的学生是:\n");
printf("学号:%s\n", stu[j].id);
printf("姓名:%s\n", stu[j].name);
printf("课程%d成绩:%.2f\n", k+1, max_score);
// 输出三门课程平均分最高的学生的学号、姓名和平均分
max_average = stu[0].average;
max_index = 0;
for (i = 1; i < N; i++) {
if (stu[i].average > max_average) {
max_average = stu[i].average;
max_index = i;
}
}
printf("三门课程平均分数最高的学生是:\n");
printf("学号:%s\n", stu[max_index].id);
printf("姓名:%s\n", stu[max_index].name);
printf("平均分:%.2f\n", max_average);
// 按照平均分从高到低进行排序
for (i = 0; i < N; i++) {
for (j = i+1; j < N; j++) {
if (stu[i].average < stu[j].average) {
// 交换学生信息
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
// 输出排序结果
printf("按照平均分从高到低排序结果如下:\n");
printf("学号\t姓名\t课程1\t课程2\t课程3\t平均分\n");
for (i = 0; i < N; i++) {
printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average);
}
return 0;
}
```
希望能解决你的问题!
阅读全文