集合的并,交,差以及它们的混合运算的算法(c语言)

Python013

集合的并,交,差以及它们的混合运算的算法(c语言),第1张

/* diff.c:差运算 */

#include <stdio.h>

#include <stdlib.h>

int set_a[5] = {1, 3 ,5 ,9, 7} // 非 0 元素构成的集合

int set_b[5] = {1, 5, 2 ,8, 4}

int set_c[10] ={0}

int isin(int a_or_b, int elem)

{

    int *set_tmp

    int cnt

    switch(a_or_b) 

    {

        case 1:

            set_tmp = set_b

            break

        case 2:

            set_tmp = set_a

            break

        default:

            printf ( "parameter error!\n" )

    }

    for (cnt = 0 cnt < 5 cnt++) 

    {

        if(set_tmp[cnt] == elem)

        {

            return 1

        }

    }

    return 0

}

int main(int argc, char *argv[])

{

    int cnt, cnt2 = 0

    for (cnt = 0 cnt < 5 cnt++)

    {

        if(isin(1, set_a[cnt]) == 1) // 如果  集合 a 中的元素在集合 b 中

        {

            set_c[cnt2++] = set_a[cnt]

        }

    }

    printf ( "The result of diff: \n" )

    for(cnt = 0 set_c[cnt] != 0 cnt++) // 输出非 0 元素 

    {

        printf ( "%d\t", set_c[cnt] )

    }

    putchar('\n')

    return 0

}

亲是要这样做差运算吗?

#include "stdio.h"

int input(int d[],int n)

{

int i

//n=0

do

{

scanf("%d",d+n)

n+=1

}while(d[n-1]>=0)

d[n-1]='\0'

return n-1

}

void sort(int d[],int *n)

{

int i,j,t,k

for(i=0i<*n-1i++)

{

for(j=*n-1j>ij--)

{ if(d[j]==d[j-1])

{

*n-=1

for(k=jk<*nk++)

d[k]=d[k+1]

}

if(d[j]<d[j-1])

{

t=d[j]d[j]=d[j-1]d[j-1]=t

}

}

}

}

int fn(int d1[],int num1,int d2[],int num2)

{

int i,j,m

for(i=0i<num1i++)

{

m=0

for(j=0j<num2j++)

{

if(d1[i]==d2[j])

{

m=1

break

}

}

if(m==0)

printf("%d,",d1[i])

}

}

int main()

{

int A[100],B[100],C[200]

int numa,numb,n

int i,j

//输入 

printf("input sort A:  ")

numa=input(A,0)

sort(A,&numa)

printf("input sort B:  ")

numb=input(B,0)

sort(B,&numb)

//交集

printf("集合交集A ∩B={") 

for(i=0i<numai++)

{

for(j=0j<numbj++)

{

if(A[i]==B[j])

{

printf("%d,",A[i])

}

}

}

printf("\b}\n\n")

//并集

n=numa+numb

printf("集合并集A∪B={") 

for(i=0i<numai++)

{

C[i]=A[i]

}

for(i=numai<ni++)

{

C[i]=B[i-numa]

}

sort(C,&n)

for(i=0i<ni++)

printf("%d,",C[i])

printf("\b}\n\n")

//集合差

printf("A-B={")

  fn(A,numa,B,numb)

  printf("\b}\n\n")

}