如何使用C语言不使用额外数组实现一个4x4矩阵的转置操作?
时间: 2024-12-11 21:25:44 浏览: 14
在C语言中,不使用额外数组实现一个4x4矩阵转置,可以通过两个指针分别指向矩阵的行首和列首元素来进行逐元素的交换。以下是一种示例性的实现:
```c
#include <stdio.h>
void transpose(int matrix[4][4]) {
int temp; // 临时变量用于交换
for (int i = 0; i < 4; i++) { // 遍历行
for (int j = i + 1; j < 4; j++) { // 从当前行的下一个元素开始遍历列
temp = matrix[i][j]; // 保存需要交换的元素
matrix[i][j] = matrix[j][i]; // 将当前元素移到目标位置
matrix[j][i] = temp; // 把之前保存的元素放回原位置
}
}
}
// 示例
int main() {
int matrix[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
transpose(matrix);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,`transpose`函数通过两层嵌套循环实现了矩阵的转置,同时避免了创建新的数组。当你运行此程序时,输出的就是转置后的矩阵。
阅读全文