在矩阵 C++ 中交换 2 行

Swaping 2 rows in matrix c++

所以我有这个作业,打印一个 3 行 4 列的矩阵,到目前为止我设法以某种方式做到了(主要是通过阅读这个论坛),因为我们大学的教授不会解释这是怎么回事完成。所以切入正题。我的代码看起来像这样。我设法打印矩阵,然后我真的不知道这些东西是如何工作的,所以我尝试只移动临时矩阵中的第 1 行,然后将其移回。但这看起来确实不对,但我真的不知道还有什么其他方法可以做到这一点。我应该怎么办?

int matrix[3][4] = { { 1,2,3,3 },{ 4,5,6,2 },{ 7,8,9,3 } };
 int temp[3][4];

 for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++)

        cout << "  " << matrix[i][j];
    cout << endl;
}


for (int i = 0; i < 3; i++) {

    temp[1][4] = matrix[1][4];
    matrix[3][4] = matrix[1][4];
    matrix[1][4] = temp[1][4];
}
for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++)

        cout << "  " << matrix[i][j];
    cout << endl;
}


    return 0;

}

如果你想交换第二行和第三行你可以这样做,记住数组的索引从 0 而不是 1 开始

    for (int i = 0; i < 4; i++) {
        temp = matrix[1][i];
        matrix[1][i] = matrix[2][i];
        matrix[2][i] = temp;
    }

在 header <utility> 中声明了标准函数 std::swap 允许交换两个数组。否则你可以自己写一个合适的代码。

这是一个展示这两种方法的演示程序。

#include <iostream>
#include <utility>


int main()
{
    const size_t M = 3;
    const size_t N = 4;

    int matrix[M][N] = 
    { 
        { 1, 2, 3, 3 },
        { 4, 5, 6, 2 },
        { 7, 8, 9, 3 } 
    };

    for ( const auto &row : matrix )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;

    std::swap( matrix[0], matrix[2] );

    for ( const auto &row : matrix )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    std::cout << std::endl;

    for ( size_t i = 0; i < N; i++ )
    {
        int tmp = matrix[0][i];
        matrix[0][i] = matrix[2][i];
        matrix[2][i] = tmp;
    }

    for ( const auto &row : matrix )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

}

它的输出是

1 2 3 3 
4 5 6 2 
7 8 9 3 

7 8 9 3 
4 5 6 2 
1 2 3 3 

1 2 3 3 
4 5 6 2 
7 8 9 3