用 C语言求已知 5 个学生的 4 门课程的成绩,要求求出每个学生的平均成绩,然后按平均成绩从高到低将 各学生的成绩记录排序(成绩最高的学生的排在数组最前面的行,成绩最低的学生的排在数组最后面的行,成倒序,有列表框住)
时间: 2024-12-20 15:29:37 浏览: 3
c代码-编程实现:输入10个学生的6门课成绩,分别求出每个学生的平均成绩。
5星 · 资源好评率100%
在C语言中,为了实现这个功能,你可以创建一个结构体来存储学生的信息,包括姓名和成绩,然后定义一个函数来计算平均成绩并进行排序。以下是简单的步骤:
首先,定义一个包含学生信息的结构体:
```c
typedef struct {
char name[20];
float scores[4]; // 存储四门课程的成绩
} Student;
```
接着,创建一个函数来计算平均分:
```c
float calculate_average(Student student) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += student.scores[i];
}
return sum / 4;
}
```
接下来,你需要一个函数来比较两个学生的平均分并进行排序:
```c
// 使用冒泡排序算法
void sort_students_by_average(Student students[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (calculate_average(students[j]) > calculate_average(students[j + 1])) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
```
最后,在主函数中,可以创建学生数组并初始化成绩,然后调用上述函数:
```c
int main() {
Student students[5] = {
{"张三", {85, 90, 78, 92}},
{"李四", {90, 92, 86, 88}},
{"王五", {80, 85, 88, 90}},
{"赵六", {88, 91, 80, 95}},
{"刘七", {75, 82, 85, 90}}
};
int student_count = sizeof(students) / sizeof(students[0]);
// 计算并打印每个学生的平均成绩
for (int i = 0; i < student_count; i++) {
printf("学生 %s 的平均成绩: %.2f\n", students[i].name, calculate_average(students[i]));
}
// 按平均成绩排序
sort_students_by_average(students, student_count);
// 打印排序后的学生和他们的平均成绩
printf("\n按照平均成绩从高到低排序:\n");
for (int i = 0; i < student_count; i++) {
printf("%d. %s: %.2f\n", i + 1, students[i].name, calculate_average(students[i]));
}
return 0;
}
```
运行此程序后,你会得到每个学生的平均成绩以及按平均成绩排序的结果。
阅读全文