太难了,一直弄不出来,有大佬教教吗

 

struct student
{
    int num;
    char name[10];
    int grade;
}stu[50];

void sort(struct student *p,int n)
{
    int i,j;
    struct student s;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if(p[j].grade > p[j+1].grade)
            {
                s = p[j];
                p[j] = p[j+1];
                p[j+1] = s;
            }
        }
}

void main()
{
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %s %d",&stu[i].num,stu[i].name,&stu[i].grade);
    }
    struct student *p = stu;
    printf("%20s%20s%20s\n","学号(num)","姓名(name)","成绩(grade)");
    for(i=0;i<n;i++)
        printf("%20d%20s%20d\n",stu[i].num,stu[i].name,stu[i].grade);
    sort(p,n);
    printf("%20s%20s%20s\n","学号(num)","姓名(name)","成绩(grade)");
    for(i=0;i<n;i++)
        printf("%20d%20s%20d\n",stu[i].num,stu[i].name,stu[i].grade);
    
}