任务五。集合的运算

本文介绍了一个使用C语言实现的基本集合操作程序,包括交集、并集、补集和比较两个集合是否相等的功能。通过用户输入集合元素,程序能够输出各种集合运算的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值