用C++编程定义两个二维整型数组,分别为4行5列、100行200列。 对两个数组进行初始化,第一个数组第$i$行$j$列的数据为$i*j$,第二个数组第$i$行$j$列的数据为$j*i$。 输出两个数组及其转置。
时间: 2024-10-25 07:09:18 浏览: 16
在C++中,你可以使用`std::vector`来创建动态大小的二维数组,因为它们更灵活。下面是如何定义并初始化这两个二维数组:
```cpp
#include <iostream>
#include <vector>
// 定义两个二维整型数组
std::vector<std::vector<int>> array1(4, std::vector<int>(5)); // 4行5列
std::vector<std::vector<int>> array2(100, std::vector<int>(200)); // 100行200列
// 初始化两个数组
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 5; ++j) {
array1[i][j] = i * j;
array2[i][j] = j * i;
}
}
// 定义函数用于打印矩阵
void printMatrix(const std::vector<std::vector<int>>& matrix) {
for (const auto& row : matrix) {
for (int value : row) {
std::cout << value << " ";
}
std::cout << "\n";
}
}
// 打印原始数组和它们的转置
std::vector<std::vector<int>> transpose(std::vector<std::vector<int>>& matrix) {
int rows = matrix.size(), cols = matrix[0].size();
std::vector<std::vector<int>> transposed(cols, std::vector<int>(rows));
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
transposed[j][i] = matrix[i][j];
}
}
return transposed;
}
int main() {
// 输出原数组
std::cout << "Array 1:\n";
printMatrix(array1);
// 输出原数组转置
std::vector<std::vector<int>> transposed1 = transpose(array1);
std::cout << "Transposed Array 1:\n";
printMatrix(transposed1);
// 输出Array 2
std::cout << "\nArray 2:\n";
printMatrix(array2);
// 输出Array 2 转置
std::vector<std::vector<int>> transposed2 = transpose(array2);
std::cout << "Transposed Array 2:\n";
printMatrix(transposed2);
return 0;
}
```
运行此程序会打印出两个数组以及它们的转置。注意,转置操作是通过交换矩阵行和列来完成的。
阅读全文