在C语言中,数组转置通常意味着将数组的行和列互换。对于一个二维数组`arr[m][n]`,其转置`arr^T[n][m]`可以通过两层循环实现,外层循环遍历原数组的行,内层循环遍历原数组的列,并将元素赋值给转置后的位置。
```c
include
void transpose(int arr) {
int temp;
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
int main() {
int arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
printf("原始数组:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
transpose(arr);
printf("转置后的数组:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个示例中,`transpose`函数通过两层循环实现了数组的转置。注意内层循环从`i + 1`开始,这样可以避免对角线元素的重复交换。
对于多维数组,例如一个3x4的数组,转置后可能需要一个4x3的数组来存储结果。这种情况下,你需要动态分配内存来创建新的数组,并确保在转置过程中正确处理数组的维度。
希望这个示例能帮助你理解如何在C语言中实现数组的转置。