编写一个矩阵转置的函数,矩阵的行、列数在程序中由用户输入
时间: 2024-03-03 11:48:29 浏览: 153
好的,以下是一个矩阵转置的函数的实现,可以根据用户输入的行、列数对矩阵进行转置:
```c++
#include <iostream>
using namespace std;
void transpose_matrix(int **matrix, int rows, int cols) {
int **transposed_matrix = new int*[cols];
for(int i=0; i<cols; i++) {
transposed_matrix[i] = new int[rows];
for(int j=0; j<rows; j++) {
transposed_matrix[i][j] = matrix[j][i];
}
}
// 输出转置后的矩阵
for(int i=0; i<cols; i++) {
for(int j=0; j<rows; j++) {
cout << transposed_matrix[i][j] << " ";
}
cout << endl;
}
// 释放内存
for(int i=0; i<cols; i++) {
delete[] transposed_matrix[i];
}
delete[] transposed_matrix;
}
int main() {
int rows, cols;
cout << "请输入矩阵的行数和列数:" << endl;
cin >> rows >> cols;
int **matrix = new int*[rows];
for(int i=0; i<rows; i++) {
matrix[i] = new int[cols];
for(int j=0; j<cols; j++) {
cout << "请输入第" << i+1 << "行第" << j+1 << "列的元素值:" << endl;
cin >> matrix[i][j];
}
}
cout << "原矩阵:" << endl;
// 输出原矩阵
for(int i=0; i<rows; i++) {
for(int j=0; j<cols; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
cout << "转置后的矩阵:" << endl;
transpose_matrix(matrix, rows, cols);
// 释放内存
for(int i=0; i<rows; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
```
这个程序中,我们首先让用户输入矩阵的行、列数,然后根据行、列数动态分配一个二维数组 `matrix` 来存储矩阵。接着,我们依次让用户输入每个元素的值,然后输出原矩阵的内容。
接下来,我们定义了一个 `transpose_matrix` 函数,这个函数接收一个二维数组 `matrix`,以及矩阵的行、列数 `rows` 和 `cols`。在函数中,我们先动态分配一个新的二维数组 `transposed_matrix`,这个数组的行数为原矩阵的列数,列数为原矩阵的行数。然后,我们依次将原矩阵中的每个元素复制到转置矩阵中对应的位置。最后,我们输出转置后的矩阵内容,并释放动态分配的内存。
最后,在 `main` 函数中,我们调用 `transpose_matrix` 函数来对矩阵进行转置,并在最后释放动态分配的内存。
阅读全文