求两个集合的交集,补集,并集
2018-01-05 12:49
330 查看
#include "stdio.h" int disc; void xd(int a[],int b[],int n,int m) { if (n==m&&jj(a,b,n,m)==n) { printf("相同\n"); } else printf("不相同\n"); } int jj(int a[],int b[],int n,int m) { int i,j,k=0; for (i=0;i<n;i++) { for (j=0;j<m;j++) { if (a[i]==b[j]) { printf("%d,",a[i]); k++; } } } return k; } void bj(int a[],int b[],int n,int m) { int i,j,x,k,find=0; int p[100]; for (i=0;i<n;i++) { p[i]=a[i]; } for (j=0;j<m;j++) { for (k=0;k<n;k++) { if (a[k]==b[j]) find=1; } if (find==0) { p[i]=b[j]; i++; } find=0; } x=i; for(i=0;i<x;i++) { printf("%d,",p[i]); } } int * xb(int a[],int b[],int n,int m) { int i=0,j,k,find=0; int p[100]; for (j=0;j<m;j++) { for (k=0;k<n;k++) { if (a[k]==b[j]) find=1; } if (find==0) { p[i]=b[j]; i++; } find=0; } disc=i; return p; } void xx(int a[],int b[],int n,int m) { } int main() { int a[10],b[10]; int i,j,e=0,f=0; int x,y; int * q; int * p; int aa[100]; int bb[100]; printf ("输入两个集合的个数:"); scanf("%d%d",&x,&y); printf("A:\n"); for (i=0;i<x;i++) { scanf("%d",&a[i]); } printf("B:\n"); for (j=0;j<y;j++) { scanf("%d",&b[j]); } printf("两个集合是否相同:\n"); xd(a,b,x,y); printf("\n"); printf("并集:\n"); bj(a,b,x,y); printf("\n"); printf("交集:\n"); jj(a,b,x,y); printf("\n"); printf("相对补集:\n"); q=xb(b,a,y,x); for(i=0;i<disc;i++) { aa[i]=q[i]; printf("%d ",q[i]); e++; } printf("\n"); printf("相对补集:\n"); p=xb(a,b,x,y); for(i=0;i<disc;i++) { bb[i]=p[i]; printf("%d ",p[i]); f++; } printf("\n"); printf("相对补集:\n"); bj(aa,bb,e,f); }
相关文章推荐
- grep和map计算两个集合交集、并集、补集
- 集合:求A、B两个集合的交集、并集和补集的代码(C语言)
- js取两个数组的交集|差集|并集|补集|去重示例代码
- 求两个集合的交集、差集和并集
- 输入集合A、B和全集C,求两集合的交集、并集、补集、差集
- Oracle 取两个表中数据的交集并集差异集合
- 两个集合的交集,并集,差
- java求集合的并集、交集、补集、差集和对称差集
- java求两个集合的交集和并集
- Oracle 取两个表中数据的交集并集差异集合
- 求两个升序数组的交集、并集、补集
- 求两个升序数组的交集,并集,补集
- matlab:求两个集合的 交集 和 并集
- Perl技巧 两个数组的取交集,并集与补集
- js取数组两个数组的交集|差集|并集|补集|去重
- list集合交集 并集 补集
- 求两个集合的交集以及求两个有序数组并集的第k小元素
- [笔试]两个整数集合求交集并集
- 两个DataTable之间的差集、交集、并集集合(Except、Intersect、Union)