定义数组,把读取的数据放在数组里,然后读取单数行的下标对应上面的数组输出即可。
下面是我写的代码,你看看
#include <iostream>
using namespace std;
int main()
{
int t,i,j,n,m,k;
int** q;
int** index;
cin >> t; //读入t
q = new int*[t]; //记录成绩
index = new int*[t]; //记录下标
for (i=0;i<t;i++)
{
cin >> n; //读入n
q[i] = new int[n+1]; //第一个保存n
q[i][0] = n;
//读入数据
for(j=1;j<=n;j++)
cin >> q[i][j];
//读入下标
cin >> m;
index[i] = new int[m+1];
index[i][0] = m;
for(j=1;j<=m;j++)
cin >> index[i][j];
}
//显示
for (i=0;i<t;i++)
{
m = index[i][0];
cout << "Case #"<< i+1<<":"<<endl;
for(j=0;j<m;j++)
{
k = index[i][j+1];
printf("%d\n",q[i][k]);
}
}
//释放空间
for (i=0;i<t;i++)
{
delete[] q[i]; q[i] = 0;
delete[] index[i]; index[i] =0;
}
delete[] q;q=0;
delete[] index;index = 0;
return 0;
}