C语言如何合并数组?

以两个数组作为输入,尝试合并或连接两个数组并将结果存储在第三个数组中。

合并两个数组的逻辑如下 -

J=0,k=0

for(i=0;i<o;i++) {// 合并两个数组

   if(a[j]<=b[k]){

      c[i]=a[j];

      j++;

   } else {

      c[i]=b[k];

      k++;

   }

}

程序

下面给出的程序显示了如何在 C 编程语言中合并两个数组 -

#include<stdio.h>

#include<stdlib.h>

int main(){

   int a[10],b[10],c[20],m,n,o,i,j,k,temp;

   printf("Enter size of Array1\n");

   scanf("%d",&n);

   printf("Enter size of Array2\n");

   scanf("%d",&m);

   o=m+n; //第三个数组的大小

   printf("Enter Elements of Array1\n");

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

      scanf("%d",&a[i]);

   }

   printf("Enter Elements of Array2\n");

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

      scanf("%d",&b[i]);

   }

   //排序第一个数组

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

      for(j=0;j<n-1-i;j++){

         if(a[j]>a[j+1]){

            temp=a[j];

            a[j]=a[j+1];

            a[j+1]=temp;

         }

      }

   }

   //排序第二个数组

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

      for(j=0;j<m-1-i;j++){

         if(b[j]>b[j+1]){

            temp=b[j];

            b[j]=b[j+1];

            b[j+1]=temp;

         }

      }

   }

   printf("Elements of Array1\n");

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

      printf("a[%d]=%d\n",i,a[i]);

   }

   printf("Elements of Array2\n");

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

      printf("b[%d]=%d\n",i,b[i]);

   }

   j=0;

   k=0;

   for(i=0;i<o;i++){ // 合并两个数组

      if(a[j]<=b[k]){

         c[i]=a[j];

         j++;

      }

      else{

         c[i]=b[k];

         k++;

      }

   }

   printf("Merged array is :\n");

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

      printf("c[%d]=%d\n",i,c[i]);

   }

}

输出结果

执行上述程序时,会产生以下结果 -

Enter Elements of Array1

1

2

3

4

Enter Elements of Array2

6

8

3

Elements of Array1

a[0]=1

a[1]=2

a[2]=3

a[3]=4

Elements of Array2

b[0]=3

b[1]=6

b[2]=8

Merged array is:

c[0]=1

c[1]=2

c[2]=3

c[3]=3

c[4]=4

c[5]=6

c[6]=8

以上是 C语言如何合并数组? 的全部内容, 来源链接: utcz.com/z/361003.html

回到顶部