您的位置:首页 > 其它

求两个集合的交集,补集,并集

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: