C++编写并测试33矩阵转置函数,使用动态内存分配生成动态数组
时间: 2023-06-17 16:06:19 浏览: 60
下面是一个C++编写并测试33矩阵转置函数的例子:
```cpp
#include <iostream>
using namespace std;
int main() {
int **matrix = new int*[3]; //动态分配3行
for(int i = 0; i < 3; i++) {
matrix[i] = new int[3]; //动态分配3列
for(int j = 0; j < 3; j++) {
matrix[i][j] = i * 3 + j + 1; //为矩阵赋初值
}
}
//输出原矩阵
cout << "原矩阵:" << endl;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
//转置矩阵
int **transpose = new int*[3]; //动态分配3行
for(int i = 0; i < 3; i++) {
transpose[i] = new int[3]; //动态分配3列
for(int j = 0; j < 3; j++) {
transpose[i][j] = matrix[j][i]; //转置矩阵
}
}
//输出转置矩阵
cout << "转置矩阵:" << endl;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cout << transpose[i][j] << " ";
}
cout << endl;
}
//释放动态内存
for(int i = 0; i < 3; i++) {
delete[] matrix[i];
delete[] transpose[i];
}
delete[] matrix;
delete[] transpose;
return 0;
}
```
这个程序中,首先通过 `new` 运算符动态分配了一个3行3列的矩阵 `matrix`。然后,通过两重循环为矩阵赋初值,并输出原矩阵。接着,再动态分配一个3行3列的矩阵 `transpose`,并通过两重循环将 `matrix` 转置到 `transpose` 中,最后输出转置矩阵。最后,通过两重循环释放动态内存。
注意,动态分配的内存必须在不需要使用时及时释放,否则会造成内存泄漏。