任务五。集合的运算
#include <stdio.h>
int leng;
int jiao(int a[],int b[],int n,int m);
void xd(int a[],int b[],int n,int m);
void bing(int a[],int b[],int n,int m);
int xdb(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 ("请输入的A集合的个数N:");
scanf("%d",&x);
printf("请输入B集合的个数M:");
scanf("%d",&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");
bing(a,b,x,y);
printf("\n");
printf("该两个集合的交集结果如下:\n");
jiao(a,b,x,y);
printf("\n");
printf("该A-B集合的相对补集结果如下:\n");
q=xdb(b,a,y,x);
for(i=0;i<leng;i++)
{
aa[i]=q[i];
printf("%d ",q[i]);
e++;
}
printf("\n");
printf("该B-A集合的相对补集结果如下:\n");
p=xdb(a,b,x,y);
for(i=0;i<leng;i++)
{
bb[i]=p[i];
printf("%d ",p[i]);
f++;
}
printf("\n");
printf("该两个集合的相对差集结果如下:\n");
bing(aa,bb,e,f);
}
void xd(int a[],int b[],int n,int m)//判断两个集合是否相等
{
if (n==m&&jiao(a,b,n,m)==n)
{
printf("相等\n");
}
else
printf("不相等\n");
}
int jiao(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 bing(int a[],int b[],int n,int m)//计算两数的并集
{
int i,j,x,k,con=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])
con=1;
}
if (con==0)
{
p[i]=b[j];
i++;
}
con=0;
}
x=i;
for(i=0;i<x;i++)
{
printf("%d,",p[i]);
}
}
int xdb(int a[],int b[],int n,int m)//计算两数的相对补集
{
int i=0,j,k,con=0;
int p[100];
for (j=0;j<m;j++)
{
for (k=0;k<n;k++)
{
if (a[k]==b[j])
con=1;
}
if (con==0)
{
p[i]=b[j];
i++;
}
con=0;
}
leng=i;
return p;
}