我需要在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 - 在C特例中合并2个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58755233/

10-10 21:23