所以我有这个功课,到目前为止打印一个包含3行和4列的矩阵,我设法以某种方式(主要通过阅读这个论坛)来做,因为我们的大学教授不会解释这些事情是如何完成的。所以切入点。我的代码看起来像这样。我设法打印矩阵,然后我真的不知道这些东西是如何工作的,所以我尝试在temp矩阵中移动第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 :(得分:2)
标题std::swap
中声明了标准函数<utility>
,允许交换两个数组。否则你可以自己编写适当的代码。
这是一个展示两种方法的示范程序。
#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
答案 1 :(得分:1)
如果你想交换你可以这样做的第二行和第三行,请记住数组索引从0开始而不是1
for (int i = 0; i < 4; i++) {
temp = matrix[1][i];
matrix[1][i] = matrix[2][i];
matrix[2][i] = temp;
}