每一個 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