有关C++中求转置矩阵的问题

#include<iostream>
using namespace std ;
int main(int argc, char* argv[])

{
int a[10][10],b[10][10],i,j;
int m,n;
cout<<"请输入矩阵的行数和列数:"<<endl;
cout<<"请输入矩阵的行数:"<<endl;
cin>>m;
cout<<"请输入矩阵的列数:"<<endl;
cin>>n;
cout<<"您输入的矩阵为"<<m<<"行"<<n<<"列"<<endl;
cout<<"请输入矩阵的元素"<<endl;
for(i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cin>>a[i][j] ;
}
}
cout<<"您输入的矩阵为:"<<endl;
for(i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
cout<<"它的转置矩阵为:" <<endl;
b[j][i]=a[i][j];
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
{
cout<<b[j][i]<<' ';
}
cout<<endl;
}

return 0;
}
为什么输出地转置矩阵中的元素出现乱码啊

定义

设A为m×n阶矩阵(即m行n列),第i行j列的元素是aij,即:A=(aij)
定义A的转置为这样一个n×m阶矩阵B,满足B=(aji),即bij=aji(B的第i行第j列元素是A的第j行第i列元素)。记AT=B。(这里T为A的上标)
直观来看,将A第一行作为B的第一列,以此类推!

你的算法没什么错,只要你看一下b[i][j]是多少行,多少列的矩阵,你就会明白错在哪了!
看下面,我改了一下。

for(j=0;j<=1;j++)
{
for(i=0;i<=2;i++)
{
b[j][i]=a[i][j];
cout << b[j][i]<<" ";
}
cout<<endl;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-27
b[j][i]=a[i][j];

改为:

for(i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
b[j][i]=a[i][j];
}
}

相关了解……

你可能感兴趣的内容

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