输入第一行给出一个正整数 n(≤1000),随后 n 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 n 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。 考生信息之后,给出一个正整数 m(≤n),随后一行中给出 m 个待查询的试机座位号码,以空格分隔。
时间: 2023-05-31 18:18:32 浏览: 219
### 回答1:
题目描述:
输入一个正整数n(≤100),接下来n行,每行给出一个考生的信息:准考证号、试机座位号、考试座位号。其中准考证号由16位数字组成,座位从1到n编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。考生信息之后,给出一个正整数m(≤n),随后一行中给出m个待查询的试机座位号码,以空格分隔。
输入样例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出样例:
3310120150912126 1 3
3310120150912233 2 4
解题思路:
本题需要用到结构体,将每个考生的信息存储起来,然后根据试机座位号进行查询,输出考生的信息。
具体实现见代码:
### 回答2:
这是一道简单的模拟题目,我们可以使用一个长度为 n+1 的数组 seats,来记录每个座位对应的准考证号。
输入考生信息时,将每个考生的准考证号存入 seats 数组的对应下标处即可。
查询时,我们只需依次遍历待查询的试机座位号码,输出该座位对应的考生的准考证号即可。
下面是该题的一种可能的解法,并附有详细注释。
```
#include <iostream>
using namespace std;
int main() {
// n 为考生人数,m 为待查询座位号数
int n, m;
cin >> n;
// 初始化座位数组
string seats[n+1];
for (int i = 0; i <= n; i++) {
seats[i] = "";
}
// 输入考生信息,并将准考证号存入 seats 数组
for (int i = 0; i < n; i++) {
string id;
int test_seat, exam_seat;
cin >> id >> test_seat >> exam_seat;
// 座位号作为下标,将准考证号存入 seats 数组
seats[test_seat] = id;
}
cin >> m;
// 依次查询每个试机座位号对应的准考证号,并输出
for (int i = 0; i < m; i++) {
int test_seat;
cin >> test_seat;
cout << seats[test_seat] << endl;
}
return 0;
}
```
需要注意的是,输入时,我们并不需要将考试座位号存入数组中,因为输入保证任何时候都不会将两个人分配到同一个座位上,所以只需要存储试机座位号即可。同时,座位号从 1 开始,因此需要将数组 seats 的长度设为 n+1。
### 回答3:
本题的主要任务是通过输入的考生信息,建立一个座位号和准考证号之间的对应关系,并通过输入的试机座位号码查询出相应的准考证号。
首先,我们需要定义一个用于存储座位号和准考证号对应关系的数据结构,可以使用字典(Python 中的 dict 类型)进行存储。将输入的考生信息逐一读入,按照试机座位号作为键,准考证号作为值,存储到字典中。
接着,我们可以通过输入待查询的试机座位号码,逐一在字典中进行查找,找到对应的准考证号并输出即可。
需要注意的是,输入数据中给出的座位号从 1 开始编号,而在字典中我们需要以 0 开始编号,因此需要进行一定的转换。
下面是完整的 Python 代码实现:
n = int(input())
data = {}
for i in range(n):
card_number, test_seat_number, exam_seat_number = input().split()
data[int(test_seat_number)-1] = card_number # 将试机座位号映射为字典的键,准考证号映射为字典的值
m = int(input())
query = input().split()
for i in range(m):
test_seat_number = int(query[i]) - 1 # 输入的试机座位号应该减去 1,转换为字典中的键
print(data[test_seat_number]) # 直接在字典中查找准考证号并输出
阅读全文