1041. 考试座位号(15)

题目描述

每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信息:“准考证号 试机座位号 考试座位号”。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数M(<=N),随后一行中给出M个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。

输入样例:

4
10120150912233 2 4
10120150912119 4 1
10120150912126 1 3
10120150912002 3 2
2
3 4

输出样例:

10120150912002 2
10120150912119 1

提交代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <cstring>
int main()
{
int N, M;
// type arr[n];
char sid[14];
int test, exam;
struct Student {
char sid[14];
int exam;
};
Student stu[1005];

scanf("%d", &N);
while (N--) {
scanf("%s %d %d", &sid, &test, &exam);
// char array cannot assign directly using equal sign!
// use . but not ->
strcpy(stu[test].sid, sid);
stu[test].exam = exam;
}

scanf("%d", &M);
while (M--) {
scanf("%d", &test);
printf("%s %d\n", stu[test].sid, stu[test].exam);
}

return 0;
}

个人思考

  1. 这里再次在定义数组的时候翻车了。甚至想对字符串数组直接用等号进行赋值。丢人
  2. 对于结构体,在指向成员时,如果是使用变量名,则需使用 . 运算符,如果是使用指针的话,使用的是 -> 运算符。