33,311
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
const int M=4;
const int N=4;
int main()
{
double a[M][N]=
{
4,6,8,9,
2,7,4,5,
3,8,16,15,
1,5,7,11
};
double ta[N][M];
int i,j;
for (i=0;i<N;i++)
for(j=0;j<M;j++)
{
ta[j][i]=a[i][j];
}
cout<<"矩阵a为:"<<endl;
for(i=0;i<N;i++)
{
for(int j=0;j<M;j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
cout<<"矩阵a的转置阵为:"<<endl;
for(i=0;i<N;i++)
{
for(int j=0;j<M;j++)
cout<<ta[i][j]<<"\t";
cout<<endl;
}
return 0;
}
你不会看编译器提供的报错吗,我的是VS2010,首选就报错你的数组中,打错了,然后就是j变量你没有初始化,原因是你将i写成了j.楼主多练习多调试。
//将方阵转置
#include <iostream>
using namespace std;
int main(void)
{
const int M = 4;
const int N = 4;
double a[M][N]=
{
{ 4, 6, 8, 9},
{ 2, 7, 4, 5},
{ 3, 8, 16, 15},
{ 1, 5, 7, 11}
};
int i, j;
double tmp;
//double ta[N][M];
cout<<"矩阵a为:"<<endl;
for(i = 0;i < N; i = i+1)
{
for(j = 0; j < M; j = j+1)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
for (i = 0; i < N; i = i+1)
{
for(j = i; j < M; j = j+1)
{
tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;
//ta[i][j] = a[i][j];
}
//cout<<"hello"<<endl;
}
cout<<"矩阵a的转置阵为:"<<endl;
for(i = 0;i < N; i = i+1)
{
for(j = 0; j < M; j = j+1)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
这是在你的基础上修改后的代码,有些地方是错误的哦,参考一下吧。在做方阵转置时,应该注意你的方法,即算法。你可以在草稿纸上练习一遍,然后找到规律,再编码吧~