C语言如何将5152*6401的二维数组转置成6401*5152的二维数组?
时间: 2024-09-14 21:06:56 浏览: 43
在C语言中,二维数组的转置实质上是交换行和列的位置。假设你有一个5152行6401列的二维整型数组`arr[row][col]`,要将其转置为6401行5152列的新数组`transposed_arr[col][row]`,可以按照以下步骤操作:
1. 定义新的转置数组`transposed_arr`,大小为6401 * 5152。
2. 使用两个嵌套循环,外层循环遍历原数组的所有行(从0到5151),内层循环遍历原数组的所有列(从0到6399)。
3. 在每次内层循环中,将当前行的数据赋值给新数组的对应列。这一步相当于把`arr[row][col]`的元素移到`transposed_arr[col][row]`位置。
以下是示例代码片段:
```c
#include <stdio.h>
#define ROWS 5152
#define COLS 6401
// 原始数组
int arr[ROWS][COLS];
// 转置后的数组
int transposed_arr[COLS][ROWS];
void transpose(int arr[][COLS], int transposed_arr[][ROWS]) {
for (size_t row = 0; row < ROWS; row++) {
for (size_t col = 0; col < COLS; col++) {
transposed_arr[col][row] = arr[row][col]; // 交换行和列
}
}
}
// 示例使用
int main() {
// 初始化或填充原始数组...
transpose(arr, transposed_arr);
return 0;
}
```
阅读全文