如何用c语言求解排名次问题呢?

用二维数组输入全班20个学生5门功课的成绩,求出各门功课的平均分,统计每个人的总分,并按降序排列并输出。

(排序算法为冒泡或选择,排序用函数完成)[输入]20个学生的5门功课的成绩。
[输出]数学平均分:….
平均分:…….
班级名次:….
有注释

#include "stdio.h"
void main()
{ 
  int score[20][5], i,j;
  float average[20],sum,buf;
  printf("请分别输入20个学生的成绩:\n");
  for(i=0;i<20;i++)
    { 
        sum=0;
        for(j=0;j<5;j++)
        {scanf("%d",&score[i][j]);
          sum+=score[i][j];
        }
         average[i]=sum/5;
      }
    for (i=0; i<n-1; ++i)  //比较n-1轮
    {
        for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
        {
            if (average[j] < average[j+1])
            {
                buf = average[j];
                average[j] = average[j+1];
                average[j+1] = buf;
            }
        }
    }
  for(i=0;i<20;i++)
  printf("第%d个学生的平均成绩为:%f\n",i+1,average[i]);
     
}

https://visualgo.net/zh/sorting?slide=1