将2x4阵列转换为4x2阵列,并复制所有元素



在过去的几个小时里,我一直在研究这段代码,但我还没有真正弄清楚如何做我需要做的事情,基本上我正在尝试将2x4阵列的元素复制到4x2 中

输入阵列:

{1,3,5,7}
{2,4,6,8}

所需输出:

{1,5}
{2,6}
{3,7}
{4,8}

到目前为止我试过什么

int arr1[4][2];
int arr2[2][4];
int x,y;

for (x=0; x<4; x++){
for(y=0; y<2; y++){
arr1[x][y] = arr2[y][x];
}
}

任何关于我如何处理这个问题的建议都将不胜感激。

我同意@fern17的观点,你的例子可能不正确,你需要一个正确实现的转置。

如果您的示例是正确的,那么您需要计算将输入索引映射到输出索引的函数。以下内容可以,但我不知道如何推广到其他尺寸:

#include <stdio.h>
int main() {
int src[2][4] = {
{1,3,5,7},
{2,4,6,8}
};
int dst[4][2];
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 2; j++) {
dst[i][j] = src[i % 2][2 * j + i / 2];
printf("%d%s", dst[i][j], j + 1 < 2 ? ", " : "n");
}
}
}

它会给你这个输出:

1, 5
2, 6
3, 7
4, 8

最新更新