題目描述
輸入N個學生的信息,然後進行查詢。
輸入描述:
輸入的第一行爲N,即學生的個數(N<=1000)
接下來的N行包括N個學生的信息,信息格式如下:
01 李江 男 21
02 劉唐 男 23
03 張軍 男 19
04 王娜 女 19
然後輸入一個M(M<=10000),接下來會有M行,代表M次查詢,每行輸入一個學號,格式如下:
02
03
01
04
輸出描述:
輸出M行,每行包括一個對應於查詢的學生的信息。
如果沒有對應的學生信息,則輸出“No Answer!”
示例1
輸入
4
01 李江 男 21
02 劉唐 男 23
03 張軍 男 19
04 王娜 女 19
5
02
03
01
04
03
輸出
02 劉唐 男 23
03 張軍 男 19
01 李江 男 21
04 王娜 女 19
03 張軍 男 19
題解
本題一開始是運行錯誤(runtime error ),數組開得太大,超出了棧的範圍,造成棧溢出。
#include <cstdio>
#include <string.h>
struct student{
char num[1001];
char name[100];
char sex[10];
int age;
}stu[1001];
int main(){
int N;
while(scanf("%d", &N) != EOF){
int i, j;
for(i = 0; i < N; i++){
scanf("%s %s %s %d", stu[i].num, stu[i].name, stu[i].sex, &stu[i].age);
}
int M;
scanf("%d", &M);
char num[10001];
for(i = 0; i < M; i++){
scanf("%s", num);
for(j = 0; j < N; j++){
if(strcmp(stu[j].num, num) == 0){
printf("%s %s %s %d\n", stu[j].num, stu[j].name, stu[j].sex, stu[j].age);
break;
}
}
if(j == N){
printf("No Answer!\n");
}
}
}
return 0;
}