c语言的一维数组排序

编程:全校有n个班级,每班选出一名同学参加学校选拔,请你根据比赛打分来编程将参赛选手的成绩按从高到低的顺序进行排序吧。
输入描述:第1行是一个整数n(2≤a≤20),表示一共有n个同学。第2行是n个整数,分别表示n个同学的打分。
输出指述:按成绩由高到低输出学生的成绩,数据间以一个空格分隔,行尾无空格。
输入样例:
5
97 95 98 88 89
输出样例:98 97 95 89 88


#include<stdio.h>
int main()
{
    int a[20];
    int i=0,j,temp,n;
    scanf("%d",&n);
    while(i<n)
    {
        scanf("%d",&a[i]);
        i++;
    }
    for(i=0;i<n-1;i++)//n个数的数列总共扫描n-1次
    {
        for(j=0;j<n-1-i;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
        {
            if(a[j]<a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
            {
               temp=a[j+1];
               a[j+1]=a[j];
               a[j]=temp;
            }
        }
    }
    i=0;
    while(i<n)
    {
        printf("%d ",a[i]);
        i++;
    }
    return 0;

}