矩阵转置C++帮我看一下问题出在哪里

来源:百度知道 编辑:UC知道 时间:2024/05/12 00:05:14
#include <iostream>
using namespace std;
int main()
{
int i,j;
int a[3][2],b[2][3];
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
{
cin>>a[i][j];

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

}
cout<<endl;

}

return 0;
}

输出的结果应该是
1 4
2 5
3 6

但现在输出的结果却是
1 3
2 4
3 5

哪位大大帮我看一下问题处在哪里吧
一楼的回答输出的结果为
1 3 5
2 4 6
还是不对哎
顺带一题 我用的编译器是VC++

定义

设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;

}

cout<<"Finish entering."<<endl;
for(i=0;i<=2;i++) //改成for(i=0;i<=1;i++)
{
for(j=0;j<=1;j++)//改成for(j=0;j<=2;j++)
{
b[i][j]=a[j][i];
cout << b[i][j]<<" ";

}