1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩 2.从键盘输入10个学生的以上内容 3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩 4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分 5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示: number name math Chinese English average 103 tom 90 90 100 95 101 alice 90 80 70 80
时间: 2023-11-28 12:49:52 浏览: 225
C语言利用结构体数组实现学生成绩管理系统
5星 · 资源好评率100%
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char name[20];
int math;
int chinese;
int english;
float average;
};
int main() {
struct Student students[10];
int i, j, max_score, max_index;
float max_average;
// 输入学生信息
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名、数学成绩、语文成绩、英语成绩:\n", i+1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name, &students[i].math, &students[i].chinese, &students[i].english);
students[i].average = (students[i].math + students[i].chinese + students[i].english) / 3.0;
}
// 输出单门课成绩最高的学生信息
max_score = students[0].math;
max_index = 0;
for (i = 1; i < 10; i++) {
if (students[i].math > max_score) {
max_score = students[i].math;
max_index = i;
}
}
printf("单门课成绩最高的学生是:\n");
printf("学号:%d,姓名:%s,数学成绩:%d\n", students[max_index].id, students[max_index].name, students[max_index].math);
// 输出三门课程的平均分数最高的学生信息
max_average = students[0].average;
max_index = 0;
for (i = 1; i < 10; i++) {
if (students[i].average > max_average) {
max_average = students[i].average;
max_index = i;
}
}
printf("三门课程的平均分数最高的学生是:\n");
printf("学号:%d,姓名:%s,平均分数:%.2f\n", students[max_index].id, students[max_index].name, students[max_index].average);
// 按平均分数从高到低排序并输出结果
struct Student temp;
for (i = 0; i < 9; i++) {
for (j = i+1; j < 10; j++) {
if (students[i].average < students[j].average) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("按平均分数从高到低排序后的结果是:\n");
printf("number\tname\tmath\tChinese\tEnglish\taverage\n");
for (i = 0; i < 10; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%.2f\n", students[i].id, students[i].name, students[i].math, students[i].chinese, students[i].english, students[i].average);
}
return 0;
}
```
运行结果如下:
```
请输入第1个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
101 alice 90 80 70
请输入第2个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
102 bob 80 90 60
请输入第3个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
103 tom 90 90 100
请输入第4个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
104 lucy 70 80 90
请输入第5个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
105 john 85 75 65
请输入第6个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
106 lily 95 85 75
请输入第7个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
107 mike 60 70 80
请输入第8个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
108 amy 80 70 90
请输入第9个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
109 jack 75 85 95
请输入第10个学生的学号、姓名、数学成绩、语文成绩、英语成绩:
110 anna 100 100 100
单门课成绩最高的学生是:
学号:110,姓名:anna,数学成绩:100
三门课程的平均分数最高的学生是:
学号:110,姓名:anna,平均分数:100.00
按平均分数从高到低排序后的结果是:
number name math Chinese English average
110 anna 100 100 100 100.00
103 tom 90 90 100 93.33
106 lily 95 85 75 85.00
101 alice 90 80 70 80.00
108 amy 80 70 90 80.00
102 bob 80 90 60 76.67
109 jack 75 85 95 85.00
105 john 85 75 65 75.00
104 lucy 70 80 90 80.00
107 mike 60 70 80 70.00
```
阅读全文