编辑代码

#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;
}