请问为什么输入了第一个数据后程序就自动结束了?

请问为什么输入了第一个数据后程序就自动结束了?

问题描述:

img

img

img

#include<iostream>
using namespace std;

struct exam{
    int id;
    int test;
    int com;
};



int main()
{
    int n;
    struct exam a[n];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i].id;
        cin>>a[i].test;
        cin>>a[i].com;
    }
    int m;
    int find[m];
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>find[m];
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(find[i]==a[j].test)
            {
                cout<<a[j].id<<" ";
                cout<<a[j].com<<endl;
            }
        }
    }
}

你第15行的n还是个未知大小的值啊

这样就可以了

#include<iostream>
using namespace std;
struct exam{
    int id;
    int test;
    int com;
};
 
int main()
{
    int n;
    cin>>n;
    struct exam a[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i].id;
        cin>>a[i].test;
        cin>>a[i].com;
    }
    int m;
    int find[m];
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>find[m];
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(find[i]==a[j].test)
            {
                cout<<a[j].id<<" ";
                cout<<a[j].com<<endl;
            }
        }
    }
}

有帮助望采纳,谢谢!

这个OJ可以过:

#include <iostream>
using namespace std;
int main() {
    string stu[1005][2], s1, s2;//2D数组
    int n, m, t;//t代表试机号
    cin >> n;
    for(int i = 0; i < n; i++) {
        cin >> s1 >> t >> s2;
        stu[t][0] = s1;//一维存考号
        stu[t][1] = s2;//一维存考试号
    } 
    cin >> m;
    for(int i = 0; i < m; i++) {
        cin >> t;
        cout << stu[t][0] << " " << stu[t][1] << endl;
    } 
    return 0;
}

用题主的代码修改的:

#include<iostream>
using namespace std;
struct exam{
    string id;
    int test;
    int com;
};
 
int main()
{
    int n=0;
    cin>>n;
    struct exam* a=new struct exam[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i].id;
        cin>>a[i].test;
        cin>>a[i].com;
    }
    int m=0;
    cin>>m;
    int* find=new int[m];
    for(int i=0;i<m;i++)
    {
        cin>>find[i];
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(find[i]==a[j].test)
            {
                cout<<a[j].id<<" ";
                cout<<a[j].com<<endl;
            }
        }
    }
}

img