C语言:计算两个集合的并集
2011-11-16 17:00
323 查看
#include<stdio.h> #include<stdlib.h> #include<time.h> #define NUMBER1 7 #define NUMBER2 5 void createCollect(int [],int); void display(int [],int); int main() { int collection1[NUMBER1]; int collection2[NUMBER2]; int collection3[NUMBER1+NUMBER2]; int i,j,label=0; createCollect(collection1,NUMBER1); for(j = 0;j < NUMBER2;j++) { collection2[j]=j*2; } printf("集合1:"); display(collection1,NUMBER1); printf("集合2:"); display(collection2,NUMBER2); for(i = 0; i < NUMBER1;i++) { //从集合1中取出元素,去遍历集合2中的所有元素 for(j = 0;j < NUMBER2;j++) { //如果相同则跳出遍历 if(collection1[i]==collection2[j]) break; } //判断:此时存在两种情况1) 当前集合1的元素与集合2的元素相同 //2)遍历完了集合2的数组后不存在相同的元素 if(j == NUMBER2) { collection3[label]=collection1[i]; label++; } } //把集合2的所有元素存进collection3中 for(j = 0;j < NUMBER2;j++) { collection3[label++]=collection2[j]; } printf("集合1与集合2的并集为:\n"); display(collection3,label); return 0; } //随机生成一个不含重复元素的数组 void createCollect(int num[],int count) { //randValue:临时随机数存放变量 //condition:循环生成不重复的条件 int i,j,randValue,condition; srand(time(NULL)); for(i=0;i<count;i++) { condition=1; while(condition){ randValue=1+(int)rand()%10; for(j = 0;j <= i;j++){ if(i==0){//第一个数不可能存在重复数,可以直接赋值 condition=0; break; } if(randValue==num[j]) break; if(randValue!=num[j]&&j==i-1)//当生成的随机数与当前数组最后一位不同并且下标相等时 { condition=0; break; } } } num[i]=randValue; } } //打印数组 void display(int num[],int count) { int i; for(i=0;i<count;i++) { printf("%d\t",num[i]); } printf("\n"); }并集的计算,在交集的基础上修改两处即可。有什么不足之处请拍砖....
相关文章推荐
- 集合:求A、B两个集合的交集、并集和补集的代码(C语言)
- C语言:计算两个集合的交集
- grep和map计算两个集合交集、并集、补集
- 递增有序的顺序表表示集合,求解两个集合的交集 并集 差集(c语言实现)
- C语言:两个顺序线性结构(数组)的并集
- 计算两个GPS坐标的距离 方法二 - C语言
- Day14作业 二、有两个List集合怎么取两个无重复的并集
- C++ 求两个集合的交集和并集
- java求两个集合的交集和并集
- 求两个集合的交集,补集,并集
- C语言计算两个正整数的最大公约数与最大公倍数
- Linux shell计算两个文件的交集,并集和差集
- 计算两个集合的差集——第六期 Power8 算法挑战赛
- java集合操作-----求两个集合的交集和并集
- [笔试]两个整数集合求交集并集
- 两个集合取并集
- 8-计算集合的并集(set)
- C++抽象编程——STL实战(4)——计算集合的交集,并集及区别
- 求两个集合的交集,并集
- java集合操作-----求两个集合的交集和并集