输入30位学生的姓名及数学、英语、程序设计成绩,计算每位学生的平均分,并按平均分由高到低输出学生的姓名及数学、英语、程序设计成绩,平均分。用c语言编写
时间: 2023-12-16 15:21:44 浏览: 147
好的,以下是一个实现这个功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define STUDENT_NUM 30
struct student {
char name[20];
int math_score;
int eng_score;
int prog_score;
float avg_score;
};
int main() {
struct student stu[STUDENT_NUM];
int i, j;
// 输入学生信息
for (i = 0; i < STUDENT_NUM; i++) {
printf("请输入第%d位学生的姓名及数学、英语、程序设计成绩:\n", i+1);
scanf("%s %d %d %d", stu[i].name, &stu[i].math_score, &stu[i].eng_score, &stu[i].prog_score);
stu[i].avg_score = (stu[i].math_score + stu[i].eng_score + stu[i].prog_score) / 3.0;
}
// 按平均分排序并输出
for (i = 0; i < STUDENT_NUM-1; i++) {
for (j = i+1; j < STUDENT_NUM; j++) {
if (stu[i].avg_score < stu[j].avg_score) {
// 交换两个学生的信息
struct student temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
printf("按平均分由高到低输出学生的姓名及数学、英语、程序设计成绩,平均分如下:\n");
for (i = 0; i < STUDENT_NUM; i++) {
printf("%s %d %d %d %.2f\n", stu[i].name, stu[i].math_score, stu[i].eng_score, stu[i].prog_score, stu[i].avg_score);
}
return 0;
}
```
代码中使用了结构体来保存每个学生的信息,包括姓名、数学、英语、程序设计成绩和平均分。先输入全部学生的信息,再按平均分排序并输出。注意,平均分保留两位小数,可以使用%.2f格式化输出。
阅读全文