首页 > 解决方案 > C中的数组(混合两个数组)

问题描述

我不知道为什么我的程序不起作用。专家可以帮忙吗?:)` 我在控制台中获取存储垃圾号码,我的第三个数组应该是数组 aA[] 和 aB[] 的混合,首先从数组 aA[] 中获取元素,然后从 aB[] 中获取一次。

// 2te Vektor HÜ
// Bsp.: aA[7, 8, 9]  aB[14, 15, 16]
// =>    aC[7, 14, 8, 15, 9, 16]
// returns size of C`int val = 0;
`````````````````````````````````   
int Mischen(int aA[], int aB[], int aC[], int aLaenge) {
    
    int val = 0;
    val = aLaenge;
    
    for (int i = 0; i < aLaenge; i++) {

        int c = 0, x = 1;
        c = c += 2;
        x = x += 2;

        aC[c] = aA[i], aC[x] = aB[i];


    }
    
    return val;
}

标签: arrayscfunctionfor-loopmerge

解决方案


你简化了循环。请记住,您需要将源数组中的值复制到目标数组中的备用索引。详细说明,

  • aA[0], aA[1], aA[2].. 应该去aC[0], aC[2], aC[4]...
  • aB[0], aB[1], aB[2].. 应该转到aC[1], aC[3], aC[5]... 等等。

所以逻辑可以是

  • 将值复制aA[i]aC[2*i]
  • 将值复制aB[i]aC[(2*i)+1]

因此,将其更改为

for (int i = 0; i < aLaenge; i++) {

    aC[2*i] = aA[i];
    aC[(2*i)+1] = aB[i];

}

推荐阅读