PTA |1041 考试座位号 分数 15 比较

208 阅读1分钟

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