#define _CRT_SECURE_NO_WARNINGS 1 // scanf函数不安全
#include <stdio.h>
#include <string.h>
#define N 10
#define M 3
struct student {
char name[20];
int id;
int score[M];
int total_score;
float avg_score;
};
void sort(struct student stu[], int n);
int main() {
struct student stu[N];
int i, j;
// 输入学生信息
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的信息(姓名 学号 三门课成绩): ", i + 1);
scanf("%s %d", stu[i].name, &stu[i].id);
for (j = 0; j < M; j++) {
scanf("%d", &stu[i].score[j]);
stu[i].total_score += stu[i].score[j];
}
stu[i].avg_score = (float)stu[i].total_score / M;
}
// 按照总平均成绩从高到低排序
sort(stu, N);
// 打印输出学生信息
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n");
for (i = 0; i < N; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n", stu[i].id, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].total_score, stu[i].avg_score);
}
return 0;
}
void sort(struct student stu[], int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (stu[j].avg_score < stu[j + 1].avg_score) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}