判断两数组是否有相同元素
来源:互联网 发布:js 判断手机号码 编辑:程序博客网 时间:2024/05/13 16:59
在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++) { if (a[i] == b[j]) { flag = 1; printf("有相同元素\n"); break; } } if(flag) break; } if (! flag) printf("没有相同元素\n"); printf("%d", flag); getchar(); return 0;}
阅读全文
0 0
- 判断两数组是否有相同元素
- 判断两个数组是否有相同元素
- 求两有序数组是否有相同元素
- c语言:判断两个数组是否有相同的元素
- C语言 判断两个数组里是否有相同元素
- C语言判断两个数组是否有相同的元素
- C语言判断两个数组是否有相同的元素
- 快速判断两串是否元素相同
- 第十六周 OJ 判断两个数组中是否有相同元素
- 【C语言】判断两个数组中是否有相同的元素。
- 判断数组中是否有主元素
- 判断数组中是否有某个元素
- javascript 判断两个数组中是否存在相同元素
- 判断两个数组中是否含有相同的元素
- 1.判断两个数组是不是有相同的元素。
- 判断两个数组中是否有相同的数字
- 判断两个有序数组中是否有相同的数字
- 用指针判断两个数组是否有相同的数字
- Qt之实现下拉列表菜单
- C 练习实例41-50
- 常用快捷键
- [TV5] Le rôle des océans
- ToolBar使用记录
- 判断两数组是否有相同元素
- 15算法课程 191. Number of 1 Bits
- Lesson 6 异常处理2
- Qt之QSplitter实现自由伸缩滑动窗口
- leetcode39. Combination Sum
- Lesson7 图形用户界面1
- Solrj 7.0.1 学习总结(一)使用solrj进行文档提交
- 1062. 最简分数(20)
- 上机练习2 类与对象