#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;
}
设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];
}
}
改为:
for(i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
b[j][i]=a[i][j];
}
}