一个矩阵转置的问题。。。
程序如下:#include<iostream>usingnamespacestd;voidmove(intmatrix[3][3]){inti,j,k;for(i=0;i...
程序如下:
#include <iostream>
using namespace std;
void move(int matrix[3][3])
{
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
}
编译没有错误,但运行结果原矩阵并没有转置,请问这是什么原因? 展开
#include <iostream>
using namespace std;
void move(int matrix[3][3])
{
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
}
编译没有错误,但运行结果原矩阵并没有转置,请问这是什么原因? 展开
3个回答
展开全部
void move(int matrix[3][3]) 里的for循环改下。。全部扫描的话之前置换的又给置换回来了
改为如下
#include <iostream>
using namespace std;
void move(int matrix[3][3])
{
int i,j,k;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
}
改为如下
#include <iostream>
using namespace std;
void move(int matrix[3][3])
{
int i,j,k;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
void move(int matrix[3][3])
{
int i,j,temp[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp[j][i]=matrix[i][j];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
matrix[i][j]=temp[i][j];
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
return 0;
}
这样就可以了 你void move(int matrix[3][3])有问题
using namespace std;
void move(int matrix[3][3])
{
int i,j,temp[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
temp[j][i]=matrix[i][j];
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
matrix[i][j]=temp[i][j];
}
}
int main()
{
int data[3][3];
int i,j;
cout<<"请依次输入矩阵元素:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cout<<"第"<<i+1<<"行第"<<j+1<<"个元素为:";
cin>>data[i][j];
}
cout<<"所输入的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
move(data);
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<data[i][j]<<" ";
cout<<endl;
}
return 0;
}
这样就可以了 你void move(int matrix[3][3])有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该在main()里面再定义一个指针数组int *p[3],然后再把data数组每一行的首地址赋值给这个数组,再在move函数中调用p;
int *p[3];
for(int i=0;i<3;i++) p[i]=data[i];
move(p);
int *p[3];
for(int i=0;i<3;i++) p[i]=data[i];
move(p);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询