有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩)
时间: 2023-04-24 21:00:55 浏览: 882
可以使用一个结构体来存储每个学生的数据,结构体包括学号、姓名、3门功课的成绩和平均成绩。然后从键盘输入10个学生的数据,计算每个学生的平均成绩,最后按平均成绩降序显示出所有学生的数据。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT 10
#define MAX_NAME 20
struct student {
int id;
char name[MAX_NAME];
int score[3];
float avg_score;
};
int main() {
struct student students[MAX_STUDENT];
int i, j;
// 从键盘输入10个学生的数据
for (i = ; i < MAX_STUDENT; i++) {
printf("请输入第%d个学生的学号、姓名和3门功课的成绩:\n", i+1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name, &students[i].score[], &students[i].score[1], &students[i].score[2]);
// 计算平均成绩
students[i].avg_score = (students[i].score[] + students[i].score[1] + students[i].score[2]) / 3.;
}
// 按平均成绩降序排序
for (i = ; i < MAX_STUDENT - 1; i++) {
for (j = i + 1; j < MAX_STUDENT; j++) {
if (students[i].avg_score < students[j].avg_score) {
struct student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
// 显示所有学生的数据
printf("所有学生的数据按平均成绩降序显示如下:\n");
for (i = ; i < MAX_STUDENT; i++) {
printf("学号:%d,姓名:%s,成绩:%d %d %d,平均成绩:%.2f\n", students[i].id, students[i].name, students[i].score[], students[i].score[1], students[i].score[2], students[i].avg_score);
}
return ;
}
```
阅读全文