运行示例:(输入)
4
10120150912233 2 4
10120150912119 4 1
10120150912126 1 3
10120150912002 3 2
2
3 4
上图蓝框中的代码不对
改成这样就对了,为什么???
学长解答:
scanf("%s%d%d",nu,&sn,&mes[sn].kn);
对于scanf()
这个读入函数,读入的数到分号结束才会有效。也就是说,对于上述代码,mes[sn].kn
读入数时,sn这个值还处于无效状态。
根据学长的指点,修改代码,修订版如下
#include <stdio.h>
#include <math.h>
#include <string.h>
struct node{
char num[16];
int kn;//考试座位号
}mes[1001];//考生信息,数组下标用试机座位号表示
int main()
{
int n,sn,i;//试机座位号
char nu[16];
scanf("%d",&n);
while(n--)
{
scanf("%s%d",nu,&sn);
scanf("%d",&mes[sn].kn);
strcpy(mes[sn].num,nu);
}
int m,a;
scanf("%d",&m);
while(m--)
{
scanf("%d",&a);
printf("%s %d\n",mes[a].num,mes[a].kn);
}
return 0;
}