欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实现集合的交并补

程序员文章站 2022-07-15 16:50:26
...
#include <stdio.h>
#include<stdlib.h>
int*jiao(int *a,int *b,int m,int n);
int*bing(int *a,int *b,int m,int n);
int*cha(int *a,int *b,int m,int n);
int main()
{
    int *a,*b,m,n,i;
    a=(int*)malloc(sizeof(int)*m);
    b=(int*)malloc(sizeof(int)*n);
    printf("输入集合A中的元素个数:\n");
    scanf("%d",&m);
    printf("输入集合A中的元素:\n");
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("输入集合B中的元素个数:\n");
    scanf("%d",&n);
    printf("输入集合B中的元素:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
    //int *j;
    jiao(a,b,m,n);
    //printf("%d",j[1]);
    bing(a,b,m,n);
    cha(a,b,m,n);
    return 0;
}
int*jiao(int a[],int b[],int m,int n)
{
    int c[1000],j,count, i;
    int *k=c;
    count=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(a[i]==b[j])
            { count++;
                c[count]=a[i];
                break;
            }
        }
    }
    printf("集合A,B的交集为:\n{");
    for(i=1;i<=count;i++)
    {
        printf("%d",c[i]);
    }
    printf("}\n");
    return k;
}
int*bing(int a[],int b[],int m,int n)
{
    int i,j,c[1000],*k;
    int v;
    for(v=0;v<m;v++)
    {
        c[v]=a[v];
    }
    //int flag=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(b[i]==a[j])
            {
                //flag=1;
                break;
            }
        }
        if(b[i]!=a[j])
        {
            c[v++]=b[i];
        }
    }
    printf("集合A,B的并集为:\n{");
    int q=0;
    for(;q<v;q++)
    {
        printf("%d",c[q]);
    }
    printf("}\n");
    return k;
}
int*cha(int a[],int b[],int m,int n)
{
    int i,j,*k=a;
    int p=0;
    int c[200];
    printf("集合A,B的差为:\n{");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            if(a[i]==b[j])
                break;
        }
        if(a[i]!=b[j])
        {
          c[p++]=a[i];
        }
    }
    int v=0;
    for(;v<p;v++)
        printf("%d",c[v]);
    printf("}");
    return k;
}
相关标签: 集合 交并补