1. 程式人生 > >【C語言】比較兩個陣列中是否有相同的元素

【C語言】比較兩個陣列中是否有相同的元素

我們都知道,要判斷兩個陣列中是否有相同的元素,只需要兩層for迴圈,但是在for迴圈的內部,我們要注意什麼時候跳出迴圈,這個是非常重要的,不能一直輸出有,但是也不能既輸出有,又輸出沒有!

下面是第一種方法:

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr1[4] = {0};
	int arr2[5] = {0};
	int i = 0,j=0,k=0;
	printf("請輸入陣列1(4個元素):\n");
	for(i = 0;i<sizeof(arr1)/sizeof(arr1[0]);i++)
	{
		scanf("%d",&arr1[i]);
	}
	printf("請輸入陣列2(5個元素):\n");
	for(i=0;i<sizeof(arr2)/sizeof(arr2[0]);i++)
	{
		scanf("%d",&arr2[i]);
	}

	for(j = 0; j<sizeof(arr1)/sizeof(arr1[0]); j++)
	{
		for(k = 0;k<sizeof(arr2)/sizeof(arr2[0]);k++)
		{
			if(arr1[j] == arr2[k])
			{
				printf("有相同元素!\n");
			}
			if(k<sizeof(arr2)/sizeof(arr2[0]))	
			{
				break;
			}
		}
		if(j>=sizeof(arr1)/sizeof(arr1[0]))	
		printf("沒有相同元素!\n");
	}
	return 0;
}

上面的方法就需要判斷的多一些了,並且判斷的地方也要找準,下面的方法就會簡單一些:

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr1[4] = {0};
	int arr2[5] = {0};
	int i = 0,j=0,k=0;
	printf("請輸入陣列1(4個元素):\n");
	for(i = 0;i<sizeof(arr1)/sizeof(arr1[0]);i++)
	{
		scanf("%d",&arr1[i]);
	}
	printf("請輸入陣列2(5個元素):\n");
	for(i=0;i<sizeof(arr2)/sizeof(arr2[0]);i++)
	{
		scanf("%d",&arr2[i]);
	}

	for(j = 0; j<sizeof(arr1)/sizeof(arr1[0]); j++)
	{
		for(k = 0;k<sizeof(arr2)/sizeof(arr2[0]);k++)
		{
			if(arr1[j] == arr2[k])
			{
				printf("有相同元素!\n");
				return 0;
			}
		}
	}
	printf("沒有相同元素!\n");
	return 0;
}