PTA | 程序设计类实验辅助教学平台 (pintia.cn)
思想
设一个结构体,用来存储考试信息,比较考试信息相同输出考试信息即可。
我刚开始是这样写的:
#include<iostream>
using namespace std;
const int N=1e4+10;
struct Student
{
char xh;
int n1; //试机
int n2; //考试
}student[N];
int main()
{
int n=0;cin>>n;
for(int i=0;i<n;i++)
{
cin>>student[i].xh>>student[i].n1>>student[i].n2;
}
int m=0;cin>>m;
int a[m];for(int i=0;i<m;i++)cin>>a[i];
for(int i=0;i<n;i++)
{
if(a[i]==student[i].n1)
{
cout<<student[i].xh<<" "<<student[i].n2<<endl;
}
}
return 0;
}
这样写的话因为m的长度可能比n短,因此如果i超过了m的长度就会越界,因此我们要开两个循环,一个访问m,一个访问n,如下:
#include<iostream>
using namespace std;
const int N = 1000;
struct Student
{
string xh; // 准考证号
int n1; // 试机座位号
int n2; // 考试座位号
} student[N];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> student[i].xh >> student[i].n1 >> student[i].n2;
}
int m;
cin >> m;
int a[m];
for (int i = 0; i < m; i++)
{
cin >> a[i];
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (a[i] == student[j].n1)
{
cout << student[j].xh << " " << student[j].n2 << endl;
break;
}
}
}
return 0;
}