您的位置:首页 > 其它

判断两个数组中是否有相同元素,有就输出有,没有就输出没有

2018-03-24 17:16 447 查看
第一种方法,将两个数组的值一一遍历,找寻有没有相等的数,代码如下#include<stdio.h>
#include<stdlib.h>int main()
{
 int arr1[] = { 1, 2, 3, 5, 6, 7};
 int arr2[] = { 1, 3, 4 };
 int i = 0;
 int j = 0;
 for (i = 0; i <= sizeof(arr1) / sizeof(arr1[0]); i++)
 {
  for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++)
  {
   if (arr1[i] == arr2[j])       //遍历两个数组,找寻相等的数
   {
    printf("有\n");
    break;                           //此时break跳出小循环
   }
  }
  if (arr1[i] == arr2[j])
  {
   break;                       //此时如果不写if条件直接写break,会在i循环第一遍时就跳出来,导致后面的数不能再比较
  }
 }
 if (i == sizeof(arr1) / sizeof(arr1[0]))          //当所有的数都比较完还没有发现有相同的数,此时就是没有相同元素,输出没有
 {
  printf("没有\n");
 }
 system("pause");
 return 0;
}

第二种方法,相对第一种方法来说优化了一点,利用变量count作为计数器,如果有相同的元素,就给count加1,最后判断count是否为0,为0则没有,不为0则有,代码如下#include<stdio.h>
#include<stdlib.h>int main()
{
 int arr1[] = { 1, 2, 3 };
 int arr2[] = { 5, 6, 4, 3 };
 int i = 0;
 int j = 0;
 int count = 0;
 for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
 {
  for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++)
  {
   if (arr1[i] == arr2[j])
   {
    count++;                //发现有相同元素时给变量count的值加一
    break;                     //此时跳出小循环
   }
  }
  if (count != 0)           //发现count的值不为0,此时说明有相同元素,跳出大循环
  {
   break;
  }
 }//判断count的值是否为0,为0说明没有相同元素,不为0说明有相同元素
 if (count == 0)                    
 {
  printf("没有\n");
 }
 else if (count > 0)               //如果直接写else就忽略了count可能为负数这一情况
 {
  printf("有\n");
 }
 system("pause");
 return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐