判断两数组是否有相同元素
2017-11-16 18:06
537 查看
在C语言中判断两数组是否有相同元素,有相同输出有,没有输出没有。
我们首先的思路是定义两个数组,使用两个for循环语句,内循环判断两数组是否有相同元素,有就输出有,跳出两个循环,然后在循环外用一个判断语句判断,没有就输出没有,基本设计思路如下:
#include<stdio.h> int main() { int i, j; int a[] = { 1, 2, 3, 4 }; int b[] = { 3, 5, 6, 8, 9 }; int flag = 0; for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { if (a[i] == b[j]) { flag = 1; printf("有相同元素\n"); break; } } break; } if (!flag) printf("没有相同元素\n"); getchar(); return 0; }
这个程序粗一看没有什么问题吧!,但运行结果却是:没有相同元素
这是为什么?,其实错误就出在了第二个break了,当数组a中1和数组b中所有元素比较完之后,根据程序跳出内循环,此时遇到了第二个break,那好,执行break,跳出外循环。看到了没,此时程序出错,因为跳出外循环后数组a中第二个数就不能和数组b中所有元素比较了,然会它去执行if (!flag),所以输出没有相同元素。
那么正确的改进方式是:
第二个break前加 if( flag) 判断语句,这样保证了程序的正确执行。循环条件改为 i < sizeof(a) / sizeof(a[0]) ,j < sizeof(b) / sizeof(b[0]),这样保证了程序的通用性。
正确程序为:
#include<stdio.h> int main() { int i, j; int a[] = { 1, 2, 3, 4 }; int b[] = { 3, 5, 6, 8, 9 }; int flag = 0; for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) { for (j = 0; j < sizeof(b) / sizeof(b[0]); j++) { a224 if (a[i] == b[j]) { flag = 1; printf("有相同元素\n"); break; } } if(flag) break; } if (! flag) printf("没有相同元素\n"); printf("%d", flag); getchar(); return 0; }
相关文章推荐
- C语言判断两个数组是否有相同的元素
- 判断两个数组是否有相同元素
- 用C语言实现判断两个数组中是否有相同的元素,有就输出“有”,没有则输出“没有”
- Java总哈希表的运用,判断一个数组中是否存在相同的元素之间的距离在k以内!
- 判断两个数组是否有相同的元素?有输出“有”,没有输出“没有”
- 判断两个数组中是否有相同元素,有就输出有,没有就输出没有
- Java判断2个数组里是否包含相同的元素(长度一致)
- c语言:判断两个数组是否有相同的元素
- 判断两个数组的元素是否相同,把相同的去掉
- 【C语言】判断两个数组中是否有相同的元素。
- 判断两个数组中是否有相同的元素 C语言
- c语言:判断两个数组是否有相同的元素
- jQuery 判断数组集合 是否包含相同元素.
- javascript 判断两个数组中是否存在相同元素
- 判断两个数组中是否含有相同的元素
- 第十六周 OJ 判断两个数组中是否有相同元素
- 判断两个数组中是否有相同的元素,有就输出“”有“”,没有就输出“”没有“”
- 请教一个算法问题,有两个数组A,B,判断A中是否至少有一个元素和B中元素相同
- 判断两个数组中是否有相同的元素,有就输出“有”,没有就输出“没有”
- js实现数组去重、判断数组以及对象中的内容是否相同