c语言用二维数组进行排序

问一下从键盘输入N个学生的姓名和成绩 按成绩从高到低排序用二维数组怎么做呀

#include<stdio.h>
#include<string.h>
#define N 5
main()
{int i,j;
char s[N][50]
这样开头以后不会写了

感觉用结构体比较方便

#include <stdio.h>

struct Student
{
    char name[20];
    int score;    
};

int main()
{
    int i, j, n;
    scanf("%d", &n);
    struct Student stu[n], temp;
    for (i=0; i<n; i++)
    {
        scanf("%s %d", &stu[i].name, &stu[i].score);
    }
    for (i=0; i<n-1; i++)
    {
        for (j=0; j<n-1-i; j++)
        {
            if (stu[j].score < stu[j+1].score)
            {
                temp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = temp;
            }
        }
    }
    for (i=0; i<n; i++)
    {
        printf("%s %d\n", stu[i].name, stu[i].score);
    }
    return 0;
}