用c++编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。要求使用动态内存分配生成动态数组,并用指针实现函数的功能。
时间: 2023-05-19 17:00:59 浏览: 248
以下是实现3*3矩阵转置函数的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
void transpose(int **matrix, int n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int **matrix = (int **)malloc(3 * sizeof(int *));
for (int i = 0; i < 3; i++) {
matrix[i] = (int *)malloc(3 * sizeof(int));
}
// 初始化矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matrix[i][j] = i * 3 + j + 1;
}
}
// 打印原始矩阵
printf("Original matrix:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 转置矩阵
transpose(matrix, 3);
// 打印转置后的矩阵
printf("Transposed matrix:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < 3; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
```
这个程序使用了动态内存分配来生成动态数组,并用指针实现了矩阵转置函数。程序首先使用 `malloc` 函数分配了一个包含 3 个指针的数组,然后再分别使用 `malloc` 函数分配每个指针指向的数组。这样就生成了一个 3*3 的动态数组。矩阵转置函数 `transpose` 使用两重循环来遍历矩阵,交换每个元素的行和列。最后,程序释放了动态数组所占用的内存。
注意:这个程序只是一个示例,实际上在实际开发中,应该使用更加健壮的内存分配和释放方式,以避免内存泄漏和其他问题。
阅读全文