用c语言写一个程序,有8个学生,每个学生的信息包括学号、姓名、三门课的成绩。从键盘输入数据,并按每个学生的三门课的平均成绩从高分到低分打印出这8个学生的学号、姓名、以及个人平均成绩。
时间: 2023-12-15 08:12:32 浏览: 81
好的,以下是用 C 语言编写的程序:
```c
#include <stdio.h>
#include <string.h>
struct student {
int num;
char name[20];
float score[3];
float avg;
};
void sort(struct student stu[], int n);
int main() {
struct student stu[8];
int i, j;
// 输入学生信息
for (i = 0; i < 8; i++) {
printf("请输入第%d个学生的学号,姓名和三门课的成绩:\n", i + 1);
scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
// 计算平均成绩
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
// 按平均成绩从高到低排序
sort(stu, 8);
// 输出排序后的学生信息
printf("排序后的学生信息如下:\n");
printf("学号\t姓名\t平均成绩\n");
for (i = 0; i < 8; i++) {
printf("%d\t%s\t%.2f\n", stu[i].num, stu[i].name, stu[i].avg);
}
return 0;
}
void sort(struct student stu[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (stu[i].avg < stu[j].avg) {
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
}
```
程序中定义了一个 `student` 结构体,包含学号、姓名、三门课成绩以及平均成绩。首先输入每个学生的信息,并计算出每个学生的平均成绩。然后使用冒泡排序算法按平均成绩从高到低排序。最后按照排序后的顺序输出每个学生的学号、姓名和平均成绩。
注意,排序算法的实现可以使用其他的排序算法,这里使用冒泡排序只是为了演示简单。
阅读全文