编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。要求使用动态内存分配生成动态数组,并用指针实现函数的功能。
时间: 2023-05-19 22:00:54 浏览: 248
以下是实现3*3矩阵转置函数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
void transpose(int **matrix, int size) {
int i, j, temp;
for (i = 0; i < size; i++) {
for (j = i + 1; j < size; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int **matrix;
int i, j;
int size = 3;
// allocate memory for matrix
matrix = (int **) malloc(size * sizeof(int *));
for (i = 0; i < size; i++) {
matrix[i] = (int *) malloc(size * sizeof(int));
}
// initialize matrix
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
matrix[i][j] = i * size + j + 1;
}
}
// print original matrix
printf("Original matrix:\n");
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// transpose matrix
transpose(matrix, size);
// print transposed matrix
printf("Transposed matrix:\n");
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// free memory
for (i = 0; i < size; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
```
这个程序使用动态内存分配生成动态数组,并用指针实现函数的功能。transpose()函数接受一个指向指针数组的指针和矩阵的大小作为参数,然后使用两个循环来交换矩阵中的元素,从而实现矩阵转置的功能。在主函数中,我们首先分配内存来存储矩阵,然后初始化矩阵并打印出来。接下来,我们调用transpose()函数来转置矩阵,并再次打印出来以验证转置是否成功。最后,我们释放分配的内存以避免内存泄漏。
阅读全文