如何解决c语言问题?实现独立函数的功能

设计小的成绩管理系统,具体功能包括:1.建立一个二维数组,保存20名学生的5门成绩,(其中,学生是行,课程是列)2.打印每名学生的总成绩和平均成绩3.打印每门课程的总成绩和平均成绩4.按总成绩由高到低打印每名学生的成绩5.打印不及格学生的情况


#include <stdio.h>

#define ROWS 20
#define COLS 5

int main()
{
    int scores[ROWS][COLS];
    int student_total[ROWS] = {0};   // 每个学生的总成绩
    float student_avg[ROWS] = {0};   // 每个学生的平均成绩
    int subject_total[COLS] = {0};   // 每门课程的总成绩
    float subject_avg[COLS] = {0};   // 每门课程的平均成绩
    int i, j;

    // 输入每个学生的成绩
    printf("请输入20名学生的5门成绩(每门课程以空格隔开):\n");
    for (i = 0; i < ROWS; i++) {
        printf("学生%d: ", i+1);
        for (j = 0; j < COLS; j++) {
            scanf("%d", &scores[i][j]);
            student_total[i] += scores[i][j];
            subject_total[j] += scores[i][j];
        }
        student_avg[i] = (float)student_total[i] / COLS;
    }
    for (j = 0; j < COLS; j++) {
        subject_avg[j] = (float)subject_total[j] / ROWS;
    }

    // 打印每名学生的总成绩和平均成绩
    printf("\n每名学生的总成绩和平均成绩:\n");
    for (i = 0; i < ROWS; i++) {
        printf("学生%d 总成绩:%d 平均成绩:%.2f\n", i+1, student_total[i], student_avg[i]);
    }

    // 打印每门课程的总成绩和平均成绩
    printf("\n每门课程的总成绩和平均成绩:\n");
    for (j = 0; j < COLS; j++) {
        printf("课程%d 总成绩:%d 平均成绩:%.2f\n", j+1, subject_total[j], subject_avg[j]);
    }

    // 按总成绩由高到低打印每名学生的成绩
    printf("\n按总成绩由高到低打印每名学生的成绩:\n");
    for (i = 0; i < ROWS; i++) {
        int max_total = student_total[i];
        int max_index = i;
        for (j = i+1; j < ROWS; j++) {
            if (student_total[j] > max_total) {
                max_total = student_total[j];
                max_index = j;
            }
        }
        if (max_index != i) {   // 交换元素
            int temp_total = student_total[i];
            student_total[i] = student_total[max_index];
            student_total[max_index] = temp_total;
            float temp_avg = student_avg[i];
            student_avg[i] = student_avg[max_index];
            student_avg[max_index]