题目:
输入描述:
输入的第一行为N,即学生的个数(N<=1000)
接下来的N行包括N个学生的信息,信息格式如下:
4
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
5
02
03
01
04
09
输出描述:
输出M行,每行包括一个对应于查询的学生的信息。
如果没有对应的学生信息,则输出“No Answer!”
02 刘唐 男 23
03 张军 男 19
01 李江 男 21
04 王娜 女 19
No Answer!
我的代码:
#include<iostream>
using namespace std;
int main()
{
int M,N;
string id[1000];
while(cin>>N)
{
string id[N+1];//?????为何N要多一个??????
for(int i=0;i<N+1;i++)
{
getline(cin,id[i]);
}
while(cin>>M)
{
string num;
for(int i=0;i<M;i++)
{
cin>>num;
for(int j=0;j<N+1;j++)
{
if(id[j].find(num)==0)
{
cout<<id[j]<<endl;
break;
}
if(j==N)
cout<<"No Answer!"<<endl;
}
}
}
}
}
问题1:
代码中注释那儿用getline()每次读入一整行时,数组得设N+1个才能正确输出测试样例中最后一个人的信息(不然最后一个信息输出的格式不对)
问题2:
输入测试数据有100个人时,查找1000条信息时,出现下面这种情况,求解原因(详细):