C语言用指针实现4*4二维数组的转置
时间: 2023-06-12 08:06:38 浏览: 131
可以使用以下代码实现:
```c
#include <stdio.h>
void transpose(int *matrix, int row, int col) {
int temp;
for (int i = 0; i < row; i++) {
for (int j = i + 1; j < col; j++) {
temp = *(matrix + i * col + j);
*(matrix + i * col + j) = *(matrix + j * col + i);
*(matrix + j * col + i) = temp;
}
}
}
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
printf("Original matrix:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
transpose((int *)matrix, 4, 4);
printf("Transposed matrix:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
在函数中,我们使用两重循环遍历矩阵的上三角元素,将对应位置的元素交换,即可完成矩阵的转置。
在主函数中,我们先输出原始矩阵,然后调用 `transpose` 函数进行转置操作,最后输出转置后的矩阵。需要注意的是,我们需要将二维数组转换为一维数组进行处理,因为在 C 语言中,多维数组在内存中是连续存储的。
阅读全文