从大到小排序 (c语言)

在这个程序的基础上加个从大到小排序的程序怎么改呀

#include
#define N 5

struct Stu
{
char name[20];
int x;
} a[N];

main()
{
// int a[N], i, n;
int i, n;
float ave, sum = 0;
puts("个数n:");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s%d", a[i].name, &a[i].x);
sum = sum + a[i].x;
}
ave = sum / n;
printf("\n%d个数的平均值为:%.2f\n", n, ave);
puts("\n比平均值大的数为:");
for (i = 0; i < n; i++)
if (ave < a[i].x)
printf("%s %d\n", a[i].name, a[i].x);
}

#include <stdio.h>
#include<string.h>
#define N 5

struct Stu
{
    char name[20];
    int x;
} a[N];

int main()
{
    // int a[N], i, n;
    int i, n;
    float ave, sum = 0;
    puts("个数n:");
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%s%d", a[i].name, &a[i].x);
        sum = sum + a[i].x;
    }
    ave = sum / n;
    printf("\n%d个数的平均值为:%.2f\n", n, ave);
    puts("\n比平均值大的数为:");
    for (i = 0; i < n; i++)
        if (ave < a[i].x)
            printf("%s %d\n", a[i].name, a[i].x);
    printf("排序后:\n");
    char mids[20];
    for(int i = 0;i < n;i++){
        for(int j = i + 1;j < n;j++){
            if(a[i].x > a[j].x){
                int mid = a[i].x;
                a[i].x = a[j].x;
                a[j].x = mid;
                strcpy(mids,a[i].name);
                strcpy(a[i].name,a[j].name);
                strcpy(a[j].name,mids);
            }
        }
    }
    for(int i = 0;i < n;i++){
        printf("%s %d\n", a[i].name, a[i].x);
    }
}