一个矩阵转置的问题。。。

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:50:20
程序如下:
#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]<<"

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++)