代码排名从高到低的怎么解啊?

有一份含有 n 个学生的名单,里面有每位学生的姓名、某门功课的成绩,请你按照成绩,从高到低重新输出该名单。
输入格式
第一行,一个整数 n,表示人的数量。N<50。
接下来的有效数据是 2∗n 行,每两行分别是一个人的姓名、成绩(成绩不重复)。
姓名程度不大于100,成绩为整数。
每两行之间用一个空行分隔。
输出格式
输出 2∗n行,表示按成绩排好的名单。
每两行仍然分别是一个人的姓名、成绩。
依然每两行之间用一个空行分隔。
输入样例
3
Kirisame Marisa
78
Yukari Yakumo
77
Hakurei Reimu
96

#include<stdio.h>
struct stu
{
    char name[10];
    int score;
};
void input(struct stu t[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        scanf("%s",t[i].name);
        scanf("%d",&t[i].score);
    }
}
void sort(struct stu t[],int n)
{
    int i,j;
    for(i=0; i<n-1; i++)
        for(j=0; j<n-1-i; j++)
            if(t[j].score<t[j+1].score)
            {
                struct stu tem=t[j];
                t[j]=t[j+1];
                t[j+1]=tem;
            }
}
void put(struct stu t[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf(" 姓名:%s    成绩:%d\n",t[i].name,t[i].score);
    }
}
int main()
{
    struct stu t[10];
    input(t,10);
    sort(t,10);
    put(t,10);
    return 0;
}