C语言学生成绩排序输入循环提前结束

输入循环提前结束,之后的代码也不运行了

#include<stdio.h>
struct px 
{
    char name[20];
    int fen;
};
int main()
{
    int n,i,j;
    struct px cj[n];
    struct px t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%s,%d",cj[i].name,cj[i].fen);
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(cj[j].fen<cj[j+1].fen)
            {
                t=cj[j];
                cj[j]=cj[j+1];
                cj[j+1]=t;
            }
        }
    }
    for(i=0;i<n;i++)
    printf("%s,%d\n",cj[i].name,cj[i].fen);
    return 0;
}

要清空缓存,加一条fflush(stdin);


#include<stdio.h>
struct px 
{
    char name[20];
    int fen;
};
int main()
{
    int n,i,j;
    struct px cj[n];
    struct px t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    fflush(stdin);
    scanf("%s",cj[i].name);
    fflush(stdin);
    scanf(%d",cj[i].fen);
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(cj[j].fen<cj[j+1].fen)
            {
                t=cj[j];
                cj[j]=cj[j+1];
                cj[j+1]=t;
            }
        }
    }
    for(i=0;i<n;i++)
    printf("%s,%d\n",cj[i].name,cj[i].fen);
    return 0;
}
#include<stdio.h>
struct px 
{
    char name[20];
    int fen;
};
int main()
{
    int n,i,j;
    struct px cj[1000];
    struct px t;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%s %d",cj[i].name,&cj[i].fen);
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(cj[j].fen<cj[j+1].fen)
            {
                t=cj[j];
                cj[j]=cj[j+1];
                cj[j+1]=t;
            }
        }
    }
    for(i=0;i<n;i++)
    printf("%s,%d\n",cj[i].name,cj[i].fen);
    return 0;
}


修改如下,供参考:

#include<stdio.h>
#define N 100
struct px
{
    char name[20];
    int fen;
};
int main()
{
    int n, i, j;
    struct px cj[N];//修改
    struct px t;
    scanf("%d", &n);
    getchar();     //修改
    for (i = 0; i < n; i++)
        scanf("%s %d", cj[i].name, &cj[i].fen);//修改 输入以空格作为间隔
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (cj[j].fen < cj[j + 1].fen)
            {
                t = cj[j];
                cj[j] = cj[j + 1];
                cj[j + 1] = t;
            }
        }
    }
    for (i = 0; i < n; i++)
        printf("%s,%d\n", cj[i].name, cj[i].fen);
    return 0;
}