C - 按迭代位置将两个数组合并为一个

标签 c arrays

我在将两个数组合并为一个数组时遇到问题,但我需要一个元素一个一个地放置,所以我有以下内容:

arr1[0] = 1; arr2[0] = 12;
arr1[1] = 2; arr2[1] = 20;
arr1[2] = 3; arr2[2] = 30;
arr1[3] = 4; arr2[3] = 40;
arr1[4] = 5; arr2[4] = 50;
arr1[5] = 6; arr2[5] = 60;
arr1[6] = 7; arr2[6] = 70;
arr1[7] = 8; arr2[7] = 80;
arr1[8] = 9; arr2[8] = 90;
arr1[9] = 11;arr2[9] = 100;

我需要通过排序将它们合并到第三个数组“arr3”中:

arr3 = [1,12,2,20,3,30,4,40,5,50,6,60,7,70,8,80,9,90,11,100]

这是我编写的代码,但它仍然无法工作:

#include <stdio.h>


int main(void) {
    int arr1[10], arr2[10], arr3[20], i,k,r;

    arr1[0] = 1; arr2[0] = 12; 
    arr1[1] = 2; arr2[1] = 20;
    arr1[2] = 3; arr2[2] = 30;
    arr1[3] = 4; arr2[3] = 40;
    arr1[4] = 5; arr2[4] = 50;
    arr1[5] = 6; arr2[5] = 60;
    arr1[6] = 7; arr2[6] = 70;
    arr1[7] = 8; arr2[7] = 80;
    arr1[8] = 9; arr2[8] = 90;
    arr1[9] = 11;arr2[9] = 100;

    for(i=0; i<20; i++){

        if(arr3[i-1] != 0){
            arr3[i] = arr1[i];
            arr3[i+1] = 0;
        } else {
            arr3[i-1] = arr2[i-1];
        }
        i++;

    }
    for(k=0; k<20; k++){
        printf("arr - %d b: %d \n", k, arr3[k]);
    }

    return 0;
}

最佳答案

试试这个。

int i, j;
for (i = 0, j = 0; i < 10; i++) {
    arr3[j++] = arr1[i];
    arr3[j++] = arr2[i];
}
<小时/>

希望这有帮助! :)

关于C - 按迭代位置将两个数组合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41118290/

相关文章:

c - 结构和段错误

c++ - 为什么使用 mktime 处理指针和非指针时 difftime() 会产生不同的结果?

c++ - 编译sdl c程序时出现 "sdl-config"是什么意思?

iphone - 如何在 IBOutletCollection 中隐藏一堆标签?

javascript - 形成多行插入的数组格式nodejs-mysql

javascript - 文件数组在下拉菜单中显示 "."和 ".."

c - STM32 float 计算错误

c - 在 C 中使用 AVX 实现矩阵运算

c++ - 字符字符串数组的初始化程序中的问题

javascript - 如何将对象(及其属性/值)打印到 DOM