【C语言】比较两个数组中是否有相同的元素

时间:2023-01-30 08:13:49
我们都知道,要判断两个数组中是否有相同的元素,只需要两层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;
}