c一个班上有5名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求按照平均成绩从高到低打印所有学生记录。
时间: 2024-10-08 10:02:29 浏览: 34
越来越多星级的数据集和知识组织系统-理解和利用关联数据
这是一个典型的数据库查询或算法排序的问题。首先,你需要创建一个结构体或者类来表示学生的信息,包括学号、姓名和三门课程的成绩。然后,你可以通过用户输入收集这些信息,并计算每个学生的平均成绩。
在C语言中,可以使用结构体和动态内存分配来存储和处理这种数据。例如:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
int student_id;
char name[50];
float score1, score2, score3;
float average_score;
} Student;
void input_student(Student* student) {
scanf("%d", &student->student_id);
scanf("%s", student->name);
scanf("%f %f %f", &student->score1, &student->score2, &student->score3);
student->average_score = (student->score1 + student->score2 + student->score3) / 3.0;
}
void sort_students(Student students[], int count) {
for(int i = 0; i < count - 1; i++) {
for(int j = 0; j < count - i - 1; j++) {
if(students[j].average_score < students[j+1].average_score) {
// 交换学生记录
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
int main() {
int num_of_students = 5;
Student students[num_of_students];
for(int i = 0; i < num_of_students; i++) {
input_student(&students[i]);
}
sort_students(students, num_of_students);
printf("按平均成绩从高到低的学生记录:\n");
for(int i = 0; i < num_of_students; i++) {
printf("学号: %d, 姓名: %s, 平均成绩: %.2f\n",
students[i].student_id, students[i].name, students[i].average_score);
}
return 0;
}
```
在这个程序中,`input_student`函数用于接收用户的输入并计算平均分,`sort_students`函数则对数组进行排序。注意实际运行时,需要考虑错误处理和内存管理。
阅读全文