首页 > 解决方案 > 在C中将两个二维数组合并为一个一维数组

问题描述

我采用了两个二维数组,但输出与预期的非常不同。它应该将两个二维数组合并为一个一维数组。我想合并两个数组。不添加。到处都是关于合并两个一维数组的信息和示例。请帮助某人。我不知道我错在哪里。

    #include <stdio.h>

    void print(int a[][3],int m);


    int main()
    {
    int array1[3][3];
    int array2[3][3];

    int arraySum[6][3];

    int k = 0;  //put into array;
    int l = 10;

    for(int i = 0; i < 3; i++)
    {
       for(int j = 0; j < 3; j++)
       {
           array1[i][j] = ++k;     //fill from 1 to 10
           array2[i][j] = ++l;     //fill from 11 - 19
       }
    }
/*merge arrays*/
    for(int i = 0; i < 6; i++)
    {
       for(int j = 0; j < 3; j++)
       {
           (i < 3) ? arraySum[i][j] = array2[i][j] : arraySum[i][j] =  array1[i-3][j];
           //fill arraySum with array2 and append with array1.
           //just so that arraySum does not have any order
       }
    }

     printf("Arrays before sorting");
     printf("Array 1: ");
      print(array1,3);
     printf("Array2: ");
      print(array2,3);
     printf("arraySum");
      print(arraySum,6);

    /* bubble sort*/
    for(int i = 0; i < 6; i++)
    {
        for(int j = 0; j < 3; j++)
        {
           for(int k = i+1; k < 6; k++)
           {
               for(int m = 0; m < 3; m++)
               {
                   if(arraySum[i][j] > arraySum[k][m])
                   {
                    //swap
                       int temp = arraySum[i][j];
                       arraySum[i][j] = arraySum[k][m];
                       arraySum[k][m] = temp;
                   }
               }
           }
        }
    }
     printf("\n\n Merged Array after sorting");
     print(arraySum,6);
     return 0;
    }

void print(int a[][3],int m)
{
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            printf("%d" , a[i][j]);
        }
    }
}

我想合并两个数组。不添加。到处都是关于合并两个一维数组的信息和示例。请帮助某人。我不知道我错在哪里。

标签: c

解决方案


请尝试此代码,将两个二维数组合并为一个 C 中的一维数组

    #include <stdio.h>

    void print(int a[][3],int m);


    int main()
    {
    int array1[3][3];
    int array2[3][3];

    int arraySum[6][3];

    int k = 0;  //put into array;
    int l = 10;

    for(int i = 0; i < 3; i++)
    {
       for(int j = 0; j < 3; j++)
       {
           array1[i][j] = ++k;     //fill from 1 to 10
           array2[i][j] = ++l;     //fill from 11 - 19
       }
    }
/*merge arrays*/
    for(int i = 0; i < 6; i++)
    {
       for(int j = 0; j < 3; j++)
       {
           (i < 3) ? (arraySum[i][j] = array2[i][j]) : (arraySum[i][j] = array1[i-3][j]);
           //fill arraySum with array2 and append with array1.
           //just so that arraySum does not have any order
       }
    }

     printf("Arrays before sorting");
     printf("Array 1: ");
      print(array1,3);
     printf("Array2: ");
      print(array2,3);
     printf("arraySum");
      print(arraySum,6);

    /* bubble sort*/
    for(int i = 0; i < 6; i++)
    {
        for(int j = 0; j < 3; j++)
        {
           for(int k = i+1; k < 6; k++)
           {
               for(int m = 0; m < 3; m++)
               {
                   if(arraySum[i][j] > arraySum[k][m])
                   {
                    //swap
                       int temp = arraySum[i][j];
                       arraySum[i][j] = arraySum[k][m];
                       arraySum[k][m] = temp;
                   }
               }
           }
        }
    }
     printf("\n\n Merged Array after sorting");
     print(arraySum,6);
     return 0;
    }

void print(int a[][3],int m)
{
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            printf("%d" , a[i][j]);
        }
    }
}

我希望这段代码有用。谢谢你。


推荐阅读