编写一个矩阵转置函数,矩阵的行数和列数在程序中由用户输入
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void matrixTranspose(int (*a)[cols],int rows,int cols) //矩阵转置函数
/*二维数组作为函数参数必须将列数写入形式参数中,
二维数组的作为函数参数的传入方法:
1.int sum_arr(int a[N][N],int size)size的值是行数,二维数组可以看作是
元素为数组的一维数组
example:C++.P207
2.int sum_arr(int (*a)[cols],int size)
两种方法函数中调用都要用a[i][j]
数组的长度也要作为参数传入,不在函数的内部定义大小*/
{
int b[N][N]={0};
int i=0,j=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
b[j][i]=a[i][j];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=b[i][j];
}
}
cout<<"转置后的矩阵"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
int main(int argc, char** argv) {
int rows=0,cols=0;
int i=0,j=0;
cout<<"请输入行数和列数"<<endl;
cin>>rows>>cols;
int a[rows][cols]={0};
cout<<"请输入矩阵元素"<<endl;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
cin>>a[i][j];
cout<<a[i][j]<<" ";
}
cout<<endl;
}
matrixTranspose(a,rows,cols);
return 0;
}