#include <stdio.h>
#include <stdlib.h>
struct student {
float scores[3];
float total;
float average;
};
void input_scores(struct student *students, int num_students) {
for (int i = 0; i < num_students; i++) {
printf("请输入第 %d 个同学的三门课成绩:\n", i + 1);
for (int j = 0; j < 3; j++) {
scanf("%f", &students[i].scores[j]);
}
}
}
void calculate_total_and_average(struct student *students, int num_students) {
for (int i = 0; i < num_students; i++) {
students[i].total = 0;
for (int j = 0; j < 3; j++) {
students[i].total += students[i].scores[j];
}
students[i].average = students[i].total / 3;
}
}
void sort_students(struct student *students, int num_students) {
struct student temp;
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - i - 1; j++) {
if (students[j].total < students[j + 1].total) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
void output_students(struct student *students, int num_students) {
printf("排序后的成绩单:\n");
for (int i = 0; i < num_students; i++) {
printf("同学 %d 的成绩:\n", i + 1);
for (int j = 0; j < 3; j++) {
printf("第 %d 门课成绩:%.2f ", j + 1, students[i].scores[j]);
}
printf("总分:%.2f,平均分:%.2f\n", students[i].total, students[i].average);
}
}
int main() {
struct student students[5];
input_scores(students, 5);
calculate_total_and_average(students, 5);
sort_students(students, 5);
output_students(students, 5);
return 0;
}