在主函数中定义一个n维方阵(1<=n<=6),并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
时间: 2024-12-16 11:25:04 浏览: 11
在C++中,你可以通过以下几个步骤来完成这个任务:
首先,在`main()`函数中定义一个动态大小的二维数组(对于n维,可以使用`std::vector<std::vector<int>>`),用于存储输入的n维数组。然后使用`cin`从用户那里获取输入。例如:
```cpp
#include <iostream>
#include <vector>
// 定义n维数组
std::vector<std::vector<int>> createArray(int n) {
std::vector<std::vector<int>> arr(n);
for (int i = 0; i < n; ++i) {
std::cout << "请输入第" << i+1 << "维的元素个数: ";
int size;
std::cin >> size;
arr[i].resize(size);
for (int j = 0; j < size; ++j) {
std::cout << "请输入第[" << i << "][" << j << "]的值: ";
std::cin >> arr[i][j];
}
}
return arr;
}
// 定义转置函数
void transpose(std::vector<std::vector<int>>& a, int n) {
std::vector<std::vector<int>> transposed(n, std::vector<int>(n));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
transposed[j][i] = a[i][j]; // 交换行和列
}
}
a.swap(transposed); // 更新原数组为转置结果
}
// 主函数
int main() {
int n;
std::cout << "请输入矩阵的维度(1 <= n <= 6): ";
std::cin >> n;
std::vector<std::vector<int>> array = createArray(n);
std::cout << "原始矩阵:\n";
for (const auto& row : array) {
for (int val : row) {
std::cout << val << " ";
}
std::cout << "\n";
}
transpose(array, n);
std::cout << "转置后的矩阵:\n";
for (const auto& row : array) {
for (int val : row) {
std::cout << val << " ";
}
std::cout << "\n";
}
return 0;
}
```
运行这段代码,它会提示用户输入每个维度的大小,并读取对应的元素。然后,它会打印出原始矩阵和转置后的矩阵。
阅读全文