每一个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常状况下,考生在入场时先获得试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生须要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。 输入格式: 输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到 N 编号。输入保证每一个人的准考证号都不一样,而且任什么时候候都不会把两我的分配到同一个座位上。 考生信息以后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。 输出格式: 对应每一个须要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。 输入样例: 4 3310120150912233 2 4 3310120150912119 4 1 3310120150912126 1 3 3310120150912002 3 2 2 3 4 输出样例: 3310120150912002 2 3310120150912119 1
// PAT_1041_Number_ID # include <stdio.h> # include <stdlib.h> typedef struct Node { char ch[18]; int n1, n2; }NODE, *pNODE; int main(void) { int n, m, search; int i, j; int N_i; int flag = 0; scanf("%d",&n); pNODE node = (pNODE)malloc(sizeof(NODE)*n); // 输入 考生信息 for (i=0; i<n; i++) { scanf("%s",node[i].ch); scanf("%d",&node[i].n1); scanf("%d",&node[i].n2); } // 输入要查询的内容 scanf("%d",&m); // 查询 for (i=0; i<m; i++) { scanf("%d",&search); flag = 0; // 在已经输入的信息中查询 for (j=0; j<n; j++) { if (search == node[j].n1) { // 若是找到了,则flag 设置为1 N_i = j; flag = 1; break; } } // 输出信息 if (flag == 1) { for (j=0; j<16; j++) { printf("%c",node[N_i].ch[j]); } printf(" %d\n",node[N_i].n2); } } return 0; }
0. 准考证号长度为16位,能够采用 long long 类型存储node
1. 先读取准考证号、机试座号和考试座号数组
2. 把准考证号和考试座号存入下标为机试座号的数组中 spa
3. 最后直接经过机试座号读取两个数组的数据便可blog
# include <stdio.h> # include <stdlib.h> # include <string.h> # define Max 1002 int main(void) { long long Num[Max], a; int flag, i; int S_num[Max], b; int len_0, len_1; scanf("%d",&len_0); // 先读取准考证号、机试座号和考试座号 for (i=0; i<len_0; i++) { scanf("%lld",&a); scanf("%d",&flag); scanf("%d",&b); // 把准考证号和考试座号存入下标为机试座号的数组中 Num[flag] = a; S_num[flag] = b; } scanf("%d",&len_1); for (i=0; i<len_1; i++) { scanf("%d",&flag); printf("%lld %d\n",Num[flag],S_num[flag]); } return 0; }
RRstring