【牛客網】清華大學 查找學生信息 解題報告

題目描述

輸入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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章