[题目] 设a为M行N列的二维数组,编程将a中的行和列交换, 交换后的数组仍然存放在a中,试建立一个类TDarray,完成以上操作。 例如,原始数组以及移动元素之后的数组如下: 1 2 3 4 5 6 7 8 9 交换后 1 4 7 2 5 8 3 6 9
时间: 2024-01-05 13:02:11 浏览: 186
好的,根据题目要求,我将为你提供一个类TDarray,用于完成行列交换的操作。以下是代码示例:
```cpp
#include <iostream>
#include <iomanip>
#define M 3
#define N 3
class TDarray
{
int a[M][N];
public:
TDarray(int x[M][N]);
void move();
void print();
};
TDarray::TDarray(int x[M][N])
{
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
a[i][j] = x[i][j];
}
void TDarray::move()
{
int temp[M][N];
// 将原始数组的行和列交换后存放在临时数组中
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
temp[j][i] = a[i][j];
// 将临时数组的内容复制回原始数组
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
a[i][j] = temp[i][j];
}
void TDarray::print()
{
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
std::cout << std::setw(4) << a[i][j];
std::cout << '\n';
}
}
int main()
{
int x[M][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
TDarray arr(x);
std::cout << "原始数组:\n";
arr.print();
arr.move();
std::cout << "\n交换后的数组:\n";
arr.print();
return 0;
}
```
运行这段代码,你将会得到以下输出:
```
原始数组:
1 2 3
4 5 6
7 8 9
交换后的数组:
1 4 7
2 5 8
3 6 9
```
这样,你就完成了题目要求的行列交换操作。
阅读全文