C++ 矩阵转置

有多组组数据。每组输入的第一行是2个整数m,n,(m,n<100),表示矩阵的行和列数。接着是一个m´n阶矩阵的描述,共m行,每行有n个整数,整数之间有一个或多个空格隔开。两组数据之间空一行。

#include <iostream>
using namespace std;
int main(void)
{
int a[100][100],b[100][100],i,j,m,n;
while(cin>>m>>n)
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
if(m>=n)
{
for(i=0;i<m;i++)
for(j=0;j<m;j++)
b[j][i]=a[i][j];
if(n!=1)
{
for(i=0;i<m;i++)
{
for(j=0;j<n-1;j++)
cout<<b[i][j]<<" ";
cout<<b[i][n-1];
cout<<endl;
}
}
else
{
for(i=0;i<m-1;i++)
cout<<b[0][i]<<" ";
cout<<b[0][m-1];
cout<<endl;
}
}
else
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[j][i]=a[i][j];
if(m!=1)
{
for(i=0;i<n;i++)
{
for(j=0;j<m-1;j++)
cout<<b[i][j]<<" ";
cout<<b[i][m-1];
cout<<endl;
}
}
else
{
for(i=0;i<n-1;i++)
cout<<b[i][0]<<endl;
cout<<b[n-1][0]<<endl;
}
}
}
return 0;
}

考虑的范围应该还不够,有些测试数据会运算出错,求解。

第1个回答  2015-09-03
using namespace std;
float a[3][3];
int main()
{int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
//cout<<"转制后的矩阵是:"<<change()<<endl;//
change();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change()
{int i,j;
float t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//从i+1开始。执行交换
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
//{for(i=0;i<3;i++)
//{for(j=0;j<3;j++)
// return a[i][j];}//return 只返回一次,后面的语句不执行。
//cout<<endl;
//}
}追问

我要运行的不仅是n*n型的矩阵,这个不适用

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网