为什么输出不了,具体错误出在哪里,应该如何修改

#include<stdio.h>
#include<string.h>
int main()
{
int n,m;
int i,k,j,h;
char a[20][1000];//a为准考证号
int b[1000],c[1000];//b为试机座位号,c为考试座位号
int d[1000];//d为需要查询的准考证号
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%d%d",a,&b[i],&c[i]);
}
scanf("%d",&m);
for(k=0;k<m;k++)
{
scanf("%d",&d[i]);
}
for(j=0;j<m;j++)
{
for(h=0;h<n;h++)//用双重循环一个个遍历给出得出试机座位号相等,从而找到考试座位
{
if(d[h]==b[h])
printf("%s %d",a[20][h],c[h]);
}
}
return 0;
}

img

修改处见注释,供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    int n,m;
    int i,k,j,h;
    char a[1000][17];//a为准考证号 a[20][1000];   修改
    int b[1000],c[1000];//b为试机座位号,c为考试座位号
    int d[1000];//d为需要查询的准考证号
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
       scanf("%s%d%d",a[i],&b[i],&c[i]);//scanf("%s%d%d",a,&b[i],&c[i]); 修改
    }
    scanf("%d",&m);
    for(k=0;k<m;k++)
    {
       scanf("%d",&d[k]); //scanf("%d",&d[i]); 修改
    }
    for(j=0;j<m;j++)
    {
       for(h=0;h<n;h++)//用双重循环一个个遍历给出得出试机座位号相等,从而找到考试座位
       {
          if(d[j]==b[h])//if(d[h]==b[h]) 修改
             printf("%s %d\n",a[h],c[h]);//printf("%s %d",a[20][h],c[h]);修改
       }
    }
    return 0;
}