兩個集合的交併差

兩個集合的交併差

#include<stdio.h>

#define N 100

void S(int n,int a[]){

int i,j,d;

a[0]=rand()%90+10;

for (i=1;i<n;i++){

d=rand()%90+10;

for (j=0;j<i;j++){

if (d==a[j]){

i--;

break;

}

else a[i]=d;

}

}

}

void output(int n,int a[]){

int i;

for (i=0;i<n;i++)

printf("  %d  ",a[i]);

printf("\n");

}

void J(int m,int a[],int n,int b[]){

int i,j,k,s,c[N];

k=0;

for (i=0;i<m;i++){

s=a[i];

for (j=0;j<n;j++){

if (s==b[j])

c[k++]=s;

}}

for (i=0;i<k;i++){

printf("  %d ",c[i]);}

}//交集

void B(int m,int a[],int n,int b[]){

int i,j,k,s,c[N];

int flag=0;

for (i=0;i<m;i++){

c[i]=a[i];

}

k=m;

for (i=0;i<n;i++){

s=b[i];

flag=1;

for (j=0;j<m;j++){

if (s==c[j])

flag=0;

}

if (flag==1)

c[k++]=s;

}

for (i=0;i<k;i++){

printf("  %d ",c[i]);}

}//並集

void C(int m,int a[],int n,int b[]){

int i,j,k,flag;

i=j=0;

while (i<m){

flag=1;

   k=a[i];

   for (j=0;j<n;j++){

        if (k==b[j])

        flag=0;

        }

        if (flag==1)

        printf("%d  ",k);

i++;

}

}//差集

int main(){

int m,n,a[N],b[N];

scanf("%d",&m);

S(m,a);           

output(m,a);

scanf("%d",&n);

S(n,b);             

output(n,b);

J(m,a,n,b);

printf("\n");

B(m,a,n,b);

printf("\n");

C(m,a,n,b);

return 0;

}


發佈了75 篇原創文章 · 獲贊 128 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章