c语言实现方阵自身的转置(不额外开辟空间)
时间: 2023-06-19 10:08:59 浏览: 123
可以使用原地转置的方法,即直接在原有的二维数组中进行转置操作。具体步骤如下:
1. 使用两重循环,遍历矩阵的上半部分(即对角线上方的元素)
2. 对于每个元素,将其与对应位置的元素进行交换
3. 最后再遍历一遍矩阵,将对角线以下的元素与它们对应的位置进行交换
下面是具体的 C 语言代码:
```c
#include <stdio.h>
#define N 3
int main() {
int arr[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int i, j, temp;
// 上三角矩阵转置
for (i = 0; i < N; i++) {
for (j = i + 1; j < N; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
// 对角线以下的元素转置
for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
// 输出转置后的矩阵
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
输出结果为:
```
1 4 7
2 5 8
3 6 9
```
这样就实现了矩阵的原地转置。
阅读全文