编写并测试3*3矩阵转置函数,保存3*3矩阵。要求使用动态内存分配生成动态数组,使用指针实现函数的功能。
时间: 2024-06-12 11:03:41 浏览: 140
以下是C++语言的代码实现:
```cpp
#include <iostream>
using namespace std;
void transpose(int** matrix, int n) {
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
// 交换matrix[i][j]和matrix[j][i]
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int n = 3;
int** matrix = new int*[n]; // 动态分配n行
for(int i=0; i<n; i++) {
matrix[i] = new int[n]; // 动态分配n列
for(int j=0; j<n; j++) {
matrix[i][j] = i*n+j+1; // 给元素赋值
}
}
// 输出原矩阵
cout << "Original matrix:" << endl;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// 转置矩阵
transpose(matrix, n);
// 输出转置后的矩阵
cout << "Transposed matrix:" << endl;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// 释放动态分配的内存
for(int i=0; i<n; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
```
程序输出结果为:
```
Original matrix:
1 2 3
4 5 6
7 8 9
Transposed matrix:
1 4 7
2 5 8
3 6 9
```
本程序使用了动态内存分配,生成了一个3行3列的矩阵,并对其进行了转置操作。函数`transpose`接受一个二维数组指针和矩阵的维数作为参数,使用两重循环交换每个元素的行列坐标,从而实现矩阵的转置。最后,程序释放了动态分配的内存。
阅读全文