原题:已知一矩阵matrix[n*n]按行主序优先存储于一维数组 array[0:n*n] 中,试编写算法将 matrix 转置且仍存储于 array 中.
分析:矩阵转置的含义就是将矩阵中第 i 行第 j 列的元素交换,对于 matrix 中的元素 matrix[i][j], 转置前它在 array 中的下标是 (i-1)*n + (j-1), 转置后它在 array 中的下标为 (j-1)*n + (i-1).
#include<iostream>
#include<time.h>
#include<iomanip>//控制输出格式的头文件
#define N 5
#define ElemType int
using namespace std;
ElemType CreateMatrix(ElemType array[],int n)
{//生成一个数据元素随机生成数组,用于测试
int i,k;
srand((unsigned)time(NULL));
for(i=0; i < n * n; i++)
{
k=rand()%100 + 9;
cout.width(4);//设置数字输出时的宽度,每一次输出都要设置
cout<<k;
array[i] = k;
if(0 == (i+1)%N)
{
cout<<endl<<endl;
}
}
cout<<endl;
return 1;
}
void Transpose(