请问为什么输入了第一个数据后程序就自动结束了?
问题描述:
#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;
}
}
}
}