c语言输入n个学生成绩及三门功课成绩,要求三门功课的平均成绩从高分到低分输出每个学生的姓名三门功课成绩及平均成绩,若平均成绩相同则按姓名的字典序输出
时间: 2023-05-12 07:03:51 浏览: 192
以下是C语言代码,可以实现输入n个学生成绩及三门功课成绩,要求三门功课的平均成绩从高分到低分输出每个学生的姓名三门功课成绩及平均成绩,若平均成绩相同则按姓名的字典序输出:
```c
#include <stdio.h>
#include <string.h>
struct student {
char name[20];
int score[3];
float avg_score;
};
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
struct student stu[n];
int i, j, k;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和三门功课成绩:", i+1);
scanf("%s %d %d %d", stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].avg_score = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
struct student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (stu[j].avg_score < stu[j+1].avg_score) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
} else if (stu[j].avg_score == stu[j+1].avg_score && strcmp(stu[j].name, stu[j+1].name) > 0) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
printf("按平均成绩从高到低输出:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d %d %.2f\n", stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].avg_score);
}
return 0;
}
```
如果您有其他问题,欢迎继续提问。
阅读全文