#include <iostream>
#define M 3
#define N 4
using namespace std;
class REVARR{
private:
int a[M][N]; // 初始化时存放原始二维数组,最终存放逆向存放后的二维数组
public:
REVARR(int x[M][N]); // 构造函数,用形参x初始化数据成员a
void reverse(); // 逆向存放二维数组
void print(); // 按二维数组方式输出a数组值
};
REVARR::REVARR(int x[M][N])
{
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
a[i][j] = x[i][j];
}
}
}
void REVARR::reverse()
{
int b[M*N];
int m = 0;
int i,j;
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
b[m++] = a[i][j];
}
}
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
a[i][j] = b[--m];
}
}
}
void REVARR::print()
{
cout<<"逆向存放后变为:"<<endl;
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
int data[M][N] = {{2,3,4,4},{5,2,1,7},{9,6,8,0}};
cout<<"原始二维数组:"<<endl;
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
cout<<data[i][j]<<" ";
}
cout<<endl;
}
REVARR arr(data);
arr.reverse();
arr.print();
return 0;
}