关于#结构体#的问题,如何解决?

目标:创建一个结构体ST,成员有num(学号),name(姓名),score(成绩),
从键盘输入N个人员信息,按score(成绩)降序输出每个学生的记录,在main函数中输入数据,在另一个函数中排序并输出。

运行结果:output后面没有东西了

# include <iostream>
using namespace std;
#include <iomanip>
#include<string>
void sort();
int N;
struct ST
{
    int num;
    string name;
    float score;
};
ST a[100];

int main()
{
    int i;
    cout<<"请输入学生的数量   ";
    cin>>N;
    cout<<"请分别输入"<<N<<"个学生的学号,姓名,成绩。用空格分开    ";
    for(i=0; i<N; i++)
    {

        cin>>a[i].num>>a[i].name>>a[i].score;
    }
    sort();
    return 0;
}
void sort()
{
    ST t;
    int i;
    for(i=0; i<N; i++)
    {
        for(i=0; i<N--; i++)
        {
            while(a[i].score<a[i+1].score)
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
    cout<<"output:   "<<endl;
    for(i=0; i<N; i++)
    {
        cout<<setw(12)<<a[i].num<<setw(8)<<a[i].name<<setw(8)<<a[i].score<<endl;
    }
}


给排序输出函数sort增加一个结构参数,用于传入main函数获取的学生结构信息数组。
然后修改了下sort函数排序成绩的逻辑,修改如下:

# include <iostream>
using namespace std;
#include <iomanip>
#include<string>

int N;
struct ST
{
    int num;
    string name;
    float score;
};
ST a[100];

void sort(ST * a);
 
int main()
{
    int i;
    cout<<"请输入学生的数量   ";
    cin>>N;
    cout<<"请分别输入"<<N<<"个学生的学号,姓名,成绩。用空格分开    ";
    for(i=0; i<N; i++)
    {
 
        cin>>a[i].num>>a[i].name>>a[i].score;
    }
    sort(a);
    return 0;
}
void sort(ST * a)
{
    ST t;
    int i,j;
    for(i=0; i<N-1; i++) //第一个for循环变量每一个数组每一个成员 
    {
        for(j=i; j<N; j++)  //第二个for循环用于遍历当前的j下成绩和数组后面的成绩相比较 
        {
            while(a[i].score<a[j].score)
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    cout<<"output:   "<<endl;
    for(i=0; i<N; i++)
    {
        cout<<setw(12)<<a[i].num<<setw(8)<<a[i].name<<setw(8)<<a[i].score<<endl;
    }
}