矩阵转置(10分)
题目内容:
设有一矩阵为 m×n 阶(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),需要将该矩阵转置为 n×m 阶的矩阵,使其中元素满足 b(j,i)=a(i,j)。其中,m、 n都不会超过20.
输入格式:
输入矩阵的行数和列数
输入矩阵数据
输出格式:
按矩阵形式输出原矩阵数据
按矩阵形式输出转置矩阵数据(注意输出是使用setw(3)控制格式,并且空格在数字前方
输入样例:
3 4
1 2 3 4 5 6 7 8 9 10 11 12
输出样例:
原矩阵a
1 2 3 4
5 6 7 8
9 10 11 12
转置矩阵b
1 5 9
2 6 10
3 7 11
4 8 12
代码如下:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m,n,i,j;
cin>>m>>n;
int a[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cin>>a[i][j];
}
cout<<"原矩阵a"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<setw(3)<<a[i][j];
}
cout<<endl;
}//输出原矩阵
cout<<"转置矩阵b"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<setw(3)<<a[j][i];
}
cout<<endl;
}//转置输出矩阵
return 0;
}
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int m,n,i,j;
cin>>m>>n;
int a[m][n],b[n][m];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cin>>a[i][j];
}//输入矩阵
cout<<"原矩阵a"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
b[j][i]=a[i][j];
cout<<setw(3)<<a[i][j];
}
cout<<endl;
}//输出原矩阵,顺便把转置矩阵存在b[n][m]数组里面
cout<<"转置矩阵b"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<setw(3)<<b[i][j];
}
cout<<endl;
}//输出转置矩阵
return 0;
}