You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现2x4二维数组转4x2数组并正确复制所有元素

问题分析

你当前写的是标准二维数组转置逻辑,运行后得到的输出会是:

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

和你预期的输出不符,核心原因是你需要的不是简单的行列交换,而是按「每两列一组」的规则把原2×4数组的元素重组为4×2数组。

可行实现方案

索引映射规则

根据你的输入输出规律,可总结出两个数组的索引对应关系:

  • 原数组arr2为2行4列,行索引范围0~1,列索引范围0~3
  • 目标数组arr1为4行2列,行索引范围0~3,列索引范围0~1
  • 映射公式:arr1[x][y] = arr2[y][ (x / 2) + 2 * y ]
    (C语言中整数除法默认向下取整,完全符合此处计算要求)

完整可运行代码

#include <stdio.h>

int main() {
    // 初始化输入数组
    int arr2[2][4] = {{1,3,5,7}, {2,4,6,8}};
    int arr1[4][2];
    int x,y;

    // 按映射规则赋值
    for (x=0; x<4; x++){
        for(y=0; y<2; y++){
            arr1[x][y] = arr2[y][ (x / 2) + 2 * y ];
        }
    }

    // 打印验证结果
    for (x=0; x<4; x++){
        printf("{%d,%d}\n", arr1[x][0], arr1[x][1]);
    }
    return 0;
}

运行输出

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

完全符合预期要求。

内容的提问来源于stack exchange,提问作者BaleKaneSon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:03