#include <iostream>
using namespace std;
int main()
{
int m,n,i,j;
int data[100][100];
cout<<"请输入矩阵的行数和列数"<<endl;
cout<<"行数:"<<endl;
cin>>m;
cout<<"列数:"<<endl;
cin>>n;
cout<<"请输入矩阵的元素"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
cin>>data[i][j];
}
cout<<"你输入的矩阵为:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<data[i][j]<<' ';
}
cout<<endl;
}
cout<<"你输入的矩阵的转置矩阵为:"<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<data[j][i]<<' ';
}
cout<<endl;
}
return 0;
}
根据提示输入,可以得到结果
建议你使用eigen库,eigen是一个强大的矩阵运算的库。这是他的官网网页链接。可以做转置,逆,分解等各种运算。网上有很详细的安装教学。在ubuntu,windows都能使用。
简单的介绍eigen下如何定义二维矩阵。
Eigen::Matrix<float,2,2> matrix; //定义一个二维矩阵
matrix << 1,2,3,4 ; //赋值
matrix = matrix.transform(); //调用类内函数,实现转置
同样,eigen还可以进行qr分解,svd分解等。
main()
{
int m,n,i,j;
int a[100][100];
printf("输入行数:");//鉴于你的是二维矩阵,输入的m值应为2
scanf("%d",&m);
printf("输入列数:");
scanf("%d",&n);
for(i=0;i<m;i++)//输入原数组的值,同时获取转置数组的值
for(j=0;j<n;j++){
printf("a[%d][%d]:",i,j);
scanf("%d",&a[j][i]);
}
//输出转置后的数组
for(i=0;i<n;i++){
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}
int a[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(int j=0;j<n;j++)
for(int i=0;i<m;i++)
printf("%d ",a[i][j]);