在 C 特殊情况下组合 2 个数组

标签 c arrays

我需要在 C 中组合两个数组。但问题是我需要一些不同类型的组合。我有两个数组。第一个有 27 个整数,第二个有 9 个整数。

int *firstArray = {1,2,3,4,5,6,7,8,9,13,14,15,16,17,18,19,20,21,25,26,27,28,29,30,31,32}
int *secondArray = {10,11,12,22,23,24,33,34,35}
int *newArray = malloc(36*sizeof(int));

我想获取 newArray 作为 1 到 35 之间数字的整数数组。如何组合这两个数组?数字只是为了代表。我认为对于第一个数组的每第 9k 个元素,我应该添加第二个数组的第一个第二个第三个…3 个元素。但我无法编码。

最佳答案

好的,这里的问题是在 firstArray 中,您有一组 9 个数字 (1-9),另一组 9 个数字 (13-21),然后是一组 8 个数字 ( 25-32),所以我必须在代码中考虑到这一点。您可以使用嵌套循环来实现您想要的。

想法是从第一个数组中读取 9,然后从第二个数组中读取 3,直到完成(总共三次),最后一种情况除外,在这种情况下,您只从第一个数组中读取 8。

   int i, j;
   for(i = 0; i < 3; i++){
      for(j = 0; j < 9; j++){
         if(i == 2 && j == 8) break;
         newArray[(i * 12) + j] = firstArray[(i * 9) + j];
      }
      for(j = 0; j < 3; j++){
         if(i == 2)
            newArray[(i * 12) + 8 + j] = secondArray[(i * 3) + j];
         else
            newArray[(i * 12) + 9 + j] = secondArray[(i * 3) + j];
      }
   }

关于在 C 特殊情况下组合 2 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755233/

相关文章:

c - g_object_unref : assertion 'G_IS_OBJECT (object)' failed

c - "register volatile int i"在 C 中的表现如何?

c - 在C中将已排序数组的索引获取到另一个数组中

javascript - 更改按自定义属性排序的对象数组的顺序

在 C 中将 void* 从短数组 (short*) 转换为 float 数组 (float)

c - ELF 如何填充它的 `short`?

javascript 将变量组合成数组

python - 如何重写使用 numpy 数组附加到列表的代码

c - 如何将 fgets 字符串结果存储到 char 数组中?

javascript - 如何扩展 Array.prototype.push()?