一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。请编写c语言程序输入全班同学的信息,计算每名同学三门课程的平均成绩,并按照平均成绩排序后输出。
时间: 2024-02-13 19:07:44 浏览: 95
好的,以下是实现该功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 成绩数组
float avg; // 平均成绩
} Student;
// 计算学生平均成绩
void calcAvg(Student *stu) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += stu->score[i];
}
stu->avg = sum / 3;
}
// 比较两个学生的平均成绩大小
int cmp(const void *a, const void *b) {
return ((Student *)b)->avg - ((Student *)a)->avg;
}
int main() {
Student stu[10];
int i, j;
// 输入学生信息
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名和三门成绩:\n", i + 1);
scanf("%d %s %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
calcAvg(&stu[i]); // 计算平均成绩
}
// 按平均成绩排序
qsort(stu, 10, sizeof(Student), cmp);
// 输出排序结果
printf("排序结果:\n");
for (i = 0; i < 10; i++) {
printf("%d %s", stu[i].id, stu[i].name);
for (j = 0; j < 3; j++) {
printf(" %.2f", stu[i].score[j]);
}
printf(" %.2f\n", stu[i].avg);
}
return 0;
}
```
这段代码中,我们使用了一个 `Student` 结构体来表示每个学生的信息,其中 `calcAvg()` 函数用来计算学生的平均成绩,`cmp()` 函数用来比较两个学生的平均成绩大小,最后通过 `qsort()` 函数对所有学生按平均成绩排序,并输出排序结果。
阅读全文