在这个问题中,核心算法是实现二维数组的行列互换。这个操作本质上是将二维数组中每个元素的行列索引互换,即将原数组的第i行第j列的元素移到新数组的第j行第i列处。
通过双重循环遍历原数组中的每个元素,将其行列索引互换后存储到新数组对应位置,就能实现行列互换的操作。
关键代码:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed[j][i] = original[i][j];
}
}
这段代码中,i表示原数组的行索引,j表示原数组的列索引。通过将原数组中第i行第j列的元素,存储到新数组的第j行第i列处,实现了行列互换操作。
这种算法在二维数组中非常常见,可以在不使用额外空间的情况下,实现很多二维数组的操作。希望这个解释对您有帮助。
整体代码:
#include <stdio.h>
// 函数声明
void transpose(int original[3][3]);
int main() {
int original[3][3] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
printf("Transposed Array:\n");
transpose(original);
return 0;
}
// 定义函数直接进行行列互换并输出
void transpose(int original[3][3]) {
int transposed[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed[j][i] = original[i][j];
}
}
// 输出新数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
}