C语言求谁是第一名,求大佬看看哪有错,输入一行后直接结束

#include

int main()

{

int N,i,a[100],max=0,k;
char b[20];
scanf("%d",&N);  //输入人数

for(i=0;i<N;i++)
{
    scanf("%d %s",&a[i],b[i]); //输入成绩 与 姓名
}

for(i=0;i<N;i++)
{
    if(a[i]>max)
    {
        max=a[i];  //查找最大成绩
        k=i;
    }
}
printf("%s",b[k]);  //输出最大成绩姓名
return 0;

}

b[i]是不是少一个&符号在第十行

是只输入了学生个数就结束了? 你这没有换行,别是按回车了

字符串数组应该用二维数组,或者指针数组,把char b[20]改为char[X][20],X可以设置为与你的N相等。

使用scanf注意,这个函数不吃回车,你输入一个字符串收,回车会缓存在缓存中,下个scanf会将回车读走的,建议使用scanf后,跟一个getchar(),就能解决这个问题了。