C 语言合并两个数组的程序

在本文中,我们将通过一个示例向您展示如何编写一个 C 语言合并两个数组的程序?要使用这个合并两个数组的程序示例,您需要了解 for 循环、while 循环和函数。

C 语言合并两个数组示例

此合并两个数组的程序允许用户输入数组大小和两个不同数组的元素。接下来,它将使用 For 循环将两个数组一个接一个地合并。

#include<stdio.h>
 
int main()
{
 	int aSize, bSize, mSize, i, j;
	int a[10], b[10], Merged[20];
  
 	printf("\n Please Enter the First Array Size  :  ");
 	scanf("%d", &aSize);
 
 	printf("\nPlease Enter the First Array Elements :  ");
 	for(i = 0; i < aSize; i++)
  	{
      	scanf("%d", &a[i]);
  	}
  	printf("\n Please Enter the Second Array Size  :  ");
 	scanf("%d", &bSize);
   
 	printf("\nPlease Enter the Second Array Elements  :  ");
 	for(i = 0; i < bSize; i++)
  	{
      	scanf("%d", &b[i]);
  	}
  	
  	for(i = 0; i < aSize; i++)
  	{
      	Merged[i] = a[i];
  	}
  	
	mSize = aSize + bSize;
 
 	for(i = 0, j = aSize; j < mSize && i < bSize; i++, j++)
  	{
  		Merged[j] = b[i];
  	}
 
 	printf("\n a[%d] Array Elements After Merging \n", mSize); 
 	for(i = 0; i < mSize; i++)
  	{
    	printf(" %d \t ",Merged[i]);
  	}
 
  	return 0;
}
C Program to Merge Two Arrays using For Loop 1

在此示例中,下面的 For 循环将有助于迭代 a[3] 数组中的每个单元格。For 循环中的条件 (i < Size) 将确保编译器不会超出数组限制。请参考 C 语言数组文章以了解数组大小、索引位置等概念。

编程 for 循环内部,我们将每个数组元素赋值给 Merged 数组。这意味着,Merged[0] = arr[0],Merged[1] = arr[1],Merged[2] = arr[2],Merged[3] = arr[3],Merged[4] = arr[4]

for(i = 0; i < aSize; i++)
{
      	Merged[i] = a[i];
}

现在 merged[3] = {10, 20, 30}

在下一行,我们有另一个 for 循环将第二个数组的元素插入到 Merged 数组中

for(i = 0, j = aSize; j < mSize && i < bSize; i++, j++)
{
	Merged[j] = b[i];
}

从上面的 C 语言合并两个数组程序的屏幕截图中,您可以看到第二个数组元素是 b[4] = {15, 25, 35, 45}

第一次迭代: for(i = 0, j = aSize; j < mSize && i < bSize; i++, j++)
for (i = 0, j = 3; 3 < 7 && 0 < 4; 0++, 3++)
条件 (3 < 7 && 0 < 4) 为 True。
Merged[j] = b[i]
Merged[3] = b[0]
Merged[3] = 15

第二次迭代:for (i = 1, j = 4; 4 < 7 && 1 < 4; 1++, 4++)
条件 (4 < 7 && 1 < 4) 为 True。
Merged[j] = b[i]
Merged[4] = b[1]
Merged[4] = 25

第三次迭代: for (i = 2, j = 5; 5 < 7 && 2 < 4; 2++, 5++)
条件 (5 < 7 && 2 < 4) 为 True。
Merged[j] = b[i]
Merged[5] = b[2]
Merged[5] = 35

第四次迭代: for (i = 3, j = 6; 6 < 7 && 3 < 4; 3++, 6++)
条件 (6 < 7 && 3 < 4) 为 True。
Merged[j] = b[i]
Merged[6] = b[3]
Merged[6] = 45

第五次迭代: for (i = 4, j = 7; 7 < 7 && 4 < 4; 4++, 7++)
条件 (7 < 7 && 4 < 4) 为 False。因此,它将退出 For 循环

接下来,我们使用了另一个 for 循环来打印输出。我建议您参考打印数组元素文章来理解这个 for 循环。

C 语言合并两个数组示例 2

此合并两个数组的程序将合并两个数组。合并时,它会检查哪个数字是最小值,然后先插入最小值。

#include<stdio.h>
 
int main()
{
 	int aSize, bSize, mSize, i, j, k;
	int a[10], b[10], Merged[20];
  
 	printf("\n Please Enter the First Array Size  :  ");
 	scanf("%d", &aSize);
 
 	printf("\nPlease Enter the First Array Elements :  ");
 	for(i = 0; i < aSize; i++)
  	{
      	scanf("%d", &a[i]);
  	}
  	printf("\n Please Enter the Second Array Size  :  ");
 	scanf("%d", &bSize);
   
 	printf("\nPlease Enter the Second Array Elements  :  ");
 	for(i = 0; i < bSize; i++)
  	{
      	scanf("%d", &b[i]);
  	}
  	
	mSize = aSize + bSize;
	
	i = 0;
	j = 0;
	
 	for(k = 0; k < mSize; k++)
  	{
  		if(i >= aSize || j >= bSize)
  		{
  			break;
	  	}
	  	if(a[i] < b[j])
	  	{
	  		Merged[k] = a[i];
	  		i++;
		}
		else
		{
			Merged[k] = b[j];
			j++;
		}
  	}
  	
  	while(i < aSize)
  	{
  		Merged[k] = a[i];
  		k++;
  		i++;
	}
	
  	while(j < bSize)
  	{
  		Merged[k] = b[j];
  		k++;
  		j++;
	}
	 
 	printf("\n a[%d] Array Elements After Merging \n", mSize); 
 	for(i = 0; i < mSize; i++)
  	{
    	printf(" %d \t ",Merged[i]);
  	}
 
  	return 0;
}

合并两个数组的输出

Please Enter the First Array Size  :  5

Please Enter the First Array Elements :  10 20 30 40 50

 Please Enter the Second Array Size  :  6

Please Enter the Second Array Elements  :  5 7 15 35 95 17

 a[11] Array Elements After Merging 
 5 	  7 	  10 	  15 	  20 	  30 	  35 	  40 	  50 	  95 	  17 	 

C 语言合并两个数组示例 3

程序合并两个数组与上面相同,但我们使用了函数概念来组织代码。

#include<stdio.h>

void Merge_Array(int a[], int aSize, int b[], int bSize, int Merged[]);
 
int main()
{
 	int aSize, bSize, mSize, i, j, k;
	int a[10], b[10], Merged[20];
  
 	printf("\n Please Enter the First Array Size  :  ");
 	scanf("%d", &aSize);
 
 	printf("\nPlease Enter the First Array Elements :  ");
 	for(i = 0; i < aSize; i++)
  	{
      	scanf("%d", &a[i]);
  	}
  	printf("\n Please Enter the Second Array Size  :  ");
 	scanf("%d", &bSize);
   
 	printf("\nPlease Enter the Second Array Elements  :  ");
 	for(i = 0; i < bSize; i++)
  	{
      	scanf("%d", &b[i]);
  	}
  	
  	Merge_Array(a, aSize, b, bSize, Merged);
  	
	mSize = aSize + bSize;
	
	printf("\n a[%d] Array Elements After Merging \n", mSize); 
 	for(i = 0; i < mSize; i++)
  	{
    	printf(" %d \t ",Merged[i]);
  	}
 
  	return 0;
} 

void Merge_Array(int a[], int aSize, int b[], int bSize, int Merged[])
{
	int i, j, k, mSize;
	j = k = 0;
	mSize = aSize + bSize;
	
	for(i = 0; i < mSize;)
	{
		if(j < aSize && k < bSize)
		{
			if(a[j] < b[k])
			{
				Merged[i] = a[j];
				j++;
			}
			else
			{
				Merged[i] = b[k];
				k++;
			}
			i++;
		}
		else if(j == aSize)
		{
			while(i < mSize)
			{
				Merged[i] = b[k];
				k++;
				i++;
			}
		}
		else
		{
			while(i < mSize)
			{
				Merged[i] = a[j];
				j++;
				i++;
			}
		}
	}
}

 Please Enter the First Array Size  :  5

Please Enter the First Array Elements :  10 20 30 40 50

 Please Enter the Second Array Size  :  8

Please Enter the Second Array Elements  :  25 9 35 45 85 89 75 125

 a[13] Array Elements After Merging 
 10 	  20 	  25 	  9 	  30 	  35 	  40 	  45 	  50 	  85 	  89 	  75 	  125