输入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
#include <iostream>
#include <string>
#include <map>
using namespace std;
//map的应用——查找
struct Student{
string name;
string gender;
int age;
};
int main() {
int n;
scanf("%d",&n);
//输入学生信息
map<string,Student> info;
for(int i=0;i<n;i++){
char num[30];
char name[30];
char gender[30];
int age;
scanf("%s%s%s%d",num,name,gender,&age);//先取出
string numstr=num;//再转string
Student stu;
stu.name=name;
stu.gender=gender;
stu.age=age;
info[numstr]=stu;
}
//根据学号查找学生信息
int m;
scanf("%d",&m);
for(int i=0;i<m;i++){
char num[30];
scanf("%s",num);
string numstr=num;
if(info.find(num)!=info.end()){
//是否找到键值对 用map的find查找
printf("%s %s %s %d\n",numstr.c_str(),
info[numstr].name.c_str(),
info[numstr].gender.c_str(),
info[numstr].age);
} else{
printf("No Answer!\n");
}
}
return 0;
}