用C++编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入

如题所述

//源码如下:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
int iRow, iCol;
int **pOrignal = NULL, **pTran = NULL;
int i, j;

cout<<"请输入矩阵的行、列数(用空格隔开): ";
cin>>iRow>>iCol;
cout<<endl;

// 分配内存空间
pOrignal = new int*[iRow];
for (i=0; i<iRow; i++)
{
pOrignal[i] = new int[iCol];
memset(pOrignal[i], 0, sizeof(int)*iCol);
}
pTran = new int*[iCol];
for (i=0; i<iCol; i++)
{
pTran[i] = new int[iRow];
memset(pTran[i], 0, sizeof(int)*iRow);
}

// 输入
cout<<"请输入矩阵各元素的值: "<<endl;
for (i=0; i<iRow; i++)
{
for (j=0; j<iCol; j++)
{
cin>>pOrignal[i][j];
}
}
cout<<endl;

// 转置
for (i=0; i<iCol; i++)
{
for (j=0; j<iRow; j++)
{
pTran[i][j] = pOrignal[j][i];
}
}

// 输出
cout<<"转置以后的矩阵为: "<<endl;
for (i=0; i<iCol; i++)
{
for (j=0; j<iRow; j++)
{
cout<<setw(5)<<pTran[i][j];
}
cout<<endl;
}

// 释放内存空间
for (i=0; i<iRow; i++)
{
delete[] pOrignal[i];
}
pOrignal = NULL;
for (i=0; i<iCol; i++)
{
delete[] pTran[i];
}
pTran = NULL;

getchar();
return 0;
}
// 测试结果如下:
温馨提示:答案为网友推荐,仅供参考