C语言,已知五个学生四门课的成绩,要求求出每个学生的平均成绩,然后输出四门课的成绩及平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序
时间: 2024-11-27 20:24:30 浏览: 8
10个学生5门课的成绩统计 C语言
4星 · 用户满意度95%
在C语言中,我们可以使用结构体(struct)来存储每个学生的姓名和成绩,数组来存放所有学生的信息,然后遍历数组计算平均成绩,并将结果存储在一个单独的数组或链表中按平均成绩排序。以下是简单的步骤:
1. 定义一个包含姓名和四门课成绩的结构体:
```c
typedef struct {
char name[50];
int score[4]; // 假设每门课程用整数表示分数
} Student;
```
2. 创建数组来存储所有学生的数据:
```c
Student students[5]; // 5个学生
```
3. 输入每个学生的成绩并计算平均成绩:
```c
for (int i = 0; i < 5; i++) {
printf("请输入学生 %d 的信息(姓名,四门课的成绩,分别输入逗号分隔):", i + 1);
scanf("%s", students[i].name); // 输入姓名
for (int j = 0; j < 4; j++) {
scanf("%d", &students[i].score[j]); // 输入四门课成绩
}
float average = (float)sum(students[i].score) / 4; // 计算平均成绩,假设sum函数用于求总和
students[i].average = average;
}
```
4. 按照平均成绩降序排序:
```c
// 使用qsort或其他排序函数,这里简化了排序过程
// 先定义一个比较函数,根据平均成绩降序排列
int compare(const void *a, const void *b) {
return (*(const Student*)b)- (*(const Student*)a)->average;
}
// 排序students数组
qsort(students, 5, sizeof(Student), compare);
```
5. 输出每个学生的四门课程成绩和平均成绩:
```c
for (int i = 0; i < 5; i++) {
printf("学生:%s\n", students[i].name);
for (int j = 0; j < 4; j++) {
printf("第%d门课程成绩:%d\n", j+1, students[i].score[j]);
}
printf("平均成绩:%.2f\n", students[i].average);
}
```
阅读全文