矩阵转置:求解释为什么矩阵转置不成功,还是原来的矩阵 10C

#include
using namespace std;
const int row = 2;
const int column = 2;
void PrintMatrix(int m[][column]);
void ReverseMatrix(int matrix[][column]);

void main()
{

cout<<"请输入"<<(row * column)<<"个数字"<<endl;
int matrix[row][column];
for(int i = 0; i < row; ++i)
{
    for(int j = 0; j < column; ++j)
    {
        cin>>matrix[i][j];
    }       
}
PrintMatrix(matrix);
ReverseMatrix(matrix);
cout<<"转置后:"<<endl;
PrintMatrix(matrix);

}

void PrintMatrix(int matrix[][column])
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<endl<<endl<<endl;
}
}

void ReverseMatrix(int matrix[][column])
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}

//求解释为什么矩阵转置不成功,还是原来的矩阵

1个回答

for(int j = 0; j < column; j++)应该改成for(int j = 0; j < i; j++)
不然相当于你每个位置都交换了两次,等于没有交换

 #include <iostream>
using namespace std;
const int row = 2;
const int column = 2;
void PrintMatrix(int m[][column]);
void ReverseMatrix(int matrix[][column]);

void main()
{


    cout << "请输入" << (row * column) << "个数字" << endl;
    int matrix[row][column];
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < column; ++j)
        {
            cin >> matrix[i][j];
        }
    }
    PrintMatrix(matrix);
    ReverseMatrix(matrix);
    cout << "转置后:" << endl;
    PrintMatrix(matrix);
}

void PrintMatrix(int matrix[][column])
{
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < column; j++)
        {
            cout << matrix[i][j] << "  ";
        }
        cout << endl << endl << endl;
    }
}

void ReverseMatrix(int matrix[][column])
{
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < i; j++)
        {
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐