#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")
}