要求:从主程序中输入一个3*5的整形矩阵,调用一个函数,将此矩阵转置,用指针作为函数的形参,在主程序中输出转置后的矩阵。
时间: 2023-06-16 20:07:47 浏览: 133
以下是可以实现该功能的C++代码:
```cpp
#include <iostream>
using namespace std;
void transpose(int *arr, int rows, int cols) {
int transposed[cols][rows]; // 创建一个新的矩阵用于存储转置后的结果
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
transposed[i][j] = *(arr + j * cols + i); // 计算转置后的下标并将值存入新矩阵
}
}
// 将转置后的矩阵拷贝回原矩阵
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
*(arr + i * rows + j) = transposed[i][j];
}
}
}
int main() {
int arr[3][5];
// 输入矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
cin >> arr[i][j];
}
}
// 输出原矩阵
cout << "Original matrix:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
// 调用转置函数
transpose(&arr[0][0], 3, 5);
// 输出转置后的矩阵
cout << "Transposed matrix:" << endl;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
cout << arr[j][i] << " ";
}
cout << endl;
}
return 0;
}
```
这段代码中,我们首先定义了一个函数`transpose`,该函数接受一个指向整型数组的指针,以及数组的行数和列数作为参数,将该矩阵转置后存入一个新的二维数组中,并将转置后的结果拷贝回原始的数组中。
在`main`函数中,我们首先输入一个3*5的整型矩阵,然后输出原始的矩阵。接着调用`transpose`函数,将矩阵转置后输出结果。注意在调用`transpose`函数时,我们传递了指向矩阵第一个元素的指针`&arr[0][0]`,这个指针可以被转换为指向整型数组的指针,可以作为`transpose`函数的形参使用。
阅读全文