strcmp那点不能正确比较,请看一下

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
    char name[10];
    int score;
}stu;
stu stu1[5000];
int main()
{
    int n,m;
    char a[5000];
    scanf("%d%d",&n,&m);
    int i,j;
    for(i=1;i<=n;i++)
    {
        scanf("%s%d",&stu1[i].name,&stu1[i].score);
    }
    int flag;
    for(j=1;j<=m;j++)
    {
        scanf("%s",&a[j]);
    }
    for(j=1;j<=m;j++)
    {
            flag=0;
            for(i=1;i<=n;i++)
        {
            while(strcmp(a[j],stu1[i].name))
            {
                printf("%d",stu1[i].score);
                flag=1;
                break;
            }
        }
        if(flag==0)printf("not exist!");
        printf("\n");
    }
    return 0;
}


while(strcmp(a[j],stu1[i].name))改成while(strcmp(&a[j],stu1[i].name))

你这代码也不行啊,a应该定义成二维数组,不然你这
for(j=1;j<=m;j++)
{
scanf("%s",&a[j]);

没法搞的啊

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
    char name[10];
    int score;
}stu;
stu stu1[5000];
int main()
{
    int n,m;
    char a[5000][10];
    scanf("%d%d",&n,&m);
    int i,j;
    for(i=1;i<=n;i++)
    {
        scanf("%s%d",stu1[i].name,&stu1[i].score);
    }
    int flag;
    for(j=1;j<=m;j++)
    {
        scanf("%s",a[j]);
    }
    for(j=1;j<=m;j++)
    {
            flag=0;
            for(i=1;i<=n;i++)
        {
            while(strcmp(a[j],stu1[i].name))
            {
                printf("%d",stu1[i].score);
                flag=1;
                break;
            }
        }
        if(flag==0)printf("not exist!");
        printf("\n");
    }
    return 0;
}