### 置换二维数组元素

二维数组在应用程序中经常会使用到，尤其是在图形图像处理领域。例如，对图像进行旋转。我们就需要调整图像数据的位置。本题目主要考察用户对二维数组的认识和理解。

答案

void PermuteArray(int nArray[], int nRows, int nCols, int nRetArray[])

{

for(int i=0; i<nRows; i++) //遍历行

for(int j=0; j<nCols; j++) //遍历列

{

nRetArray[j*nRows + nRows - i - 1] = nArray[i*nCols+j]; //计算为一个位置对应转换后的位置

}

}

int main(int argc, char* argv[])

{

int *nArray = new int[3*4];

int *nRetArray = new int[3*4];

for(int n=0; n<12; n++) //为数组初始化数据

nArray[n] = 9 - n;

for(int i=0; i<3; i++) //输出数组

{

for(int j=0; j<4; j++)

cout << nArray[i*4+j] << " " ;

cout << endl;

}

cout << "置换数组" << endl;

PermuteArray(nArray, 3, 4, nRetArray); //置换数组

for(i=0; i<4; i++) //输出结果

{

for(int j=0; j<3; j++)

cout << nRetArray[i*3+j] << " " ;

cout << endl;

}

delete []nArray; //释放数组空间

delete []nRetArray;

return 0;

}

效果如图 1 所示。

图 1 置换数组