题目描述
输入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<bits/stdc++.h>
using namespace std;
struct a
{
string name;
string sex;
int age;
};
a b[1000];
int main()
{
int N,c[1000]={0};
int count=0;
cin>>N;
for(int i=0;i<N;i++)
{
int temp;
cin>>temp;
c[temp]=1;//将存有信息的结构体数组元素的下标所对应的临时数组元素设为1,方便之后进行比较
cin>>b[temp].name>>b[temp].sex>>b[temp].age;
}
int M;
cin>>M;
for(int i=0;i<M;i++)
{
string temp1;
cin>>temp1;
int temp2=atoi(temp1.c_str());//string到int的转换
if(c[temp2]==0)//说明没有存,输出no answer
cout<<"No Answer!"<<endl;
else
cout<<temp1<<" "<<b[temp2].name<<" "<<b[temp2].sex<<" "<<b[temp2].age<<endl;
}
system("pause");
return 0;
}
//附加int到string的转换
//ostringstream os;
//int i=12;
//os<<i;
//cout<<os.str()<<endl;