.用c语言结构体输入30位学生的姓名及数学、英语、程序设计成绩,计算每位学生的平均分,并按平均分由高到低输出学生的姓名及数学、英语、程序设计成绩,平均分。
时间: 2023-12-16 19:25:04 浏览: 32
好的,这个问题需要用到结构体和排序算法,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define N 30
struct Student {
char name[20];
int math;
int english;
int programming;
float average;
};
int main() {
struct Student students[N];
int i, j, n;
struct Student temp;
printf("请输入学生的个数(不超过30):");
scanf("%d", &n);
printf("请依次输入每个学生的姓名、数学成绩、英语成绩、程序设计成绩:\n");
for (i = 0; i < n; i++) {
scanf("%s %d %d %d", students[i].name, &students[i].math, &students[i].english, &students[i].programming);
students[i].average = (float)(students[i].math + students[i].english + students[i].programming) / 3;
}
// 冒泡排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].average < students[j + 1].average) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("按平均分由高到低输出学生的姓名及数学、英语、程序设计成绩,平均分:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d %d %.2f\n", students[i].name, students[i].math, students[i].english, students[i].programming, students[i].average);
}
return 0;
}
```
这个程序首先输入学生的个数和每个学生的信息,然后计算每个学生的平均分,最后按平均分由高到低排序并输出。排序算法使用的是冒泡排序,代码中的结构体包括学生的姓名和数学、英语、程序设计成绩以及平均分。