
用c语言编写两个集合的运算
记得采纳哦
集合
#include "stdafx.h"
#include <stdio.h>
int fun(int a,int M[])//判断元素是否在集合里 在返回1 不在返回0
{
int i=0;
for(i=0;M[i]!=0;i++)
if(a==M[i]) return 1;
return 0;
}
void get(int M[])//输入集合元素
{
int i=0;
printf("\n");
do
{
scanf("%d",&M[i++]);
}
while(M[i-1]!=0);
}
void print(int M[])//打印集合
{
int i=0;
printf("\n");
while(M[i]!=0)
{
printf("%d ",M[i++]);
}
printf("\n");
}
void clear(int M[])
{
int i=0;
do
{
M[i++]=0;
}
while(M[i]!=0);
}
void fun_sum(int A[],int B[],int C[])//集合A和集合B的并集
{
int i,j;
for(i=0;A[i]!=0;i++)
{
C[i]=A[i];
}
for(j=0;B[j]!=0;j++)
{
if(!fun(B[j],C)) C[i++]=B[j];
}
}
void fun_sub(int A[],int B[],int C[])//集合A和集合B的差集
{
int i,j=0;
for(i=0;A[i]!=0;i++)
{
if(!fun(A[i],B)) C[j++]=A[i];
}
}
void fun_J(int A[],int B[],int C[])//集合A和集合B的交集
{
int i,j=0;
for(i=0;A[i]!=0;i++)
{
if(fun(A[i],B)) C[j++]=A[i];
}
}
int main(int argc, char* argv[])
{
int A[50]={0},B[50]={0},C[100]={0};
printf("请输入集合A以0结束\n");
get(A);
printf("请输入集合B以0结束\n");
get(B);
fun_sum(A,B,C);
printf("集合A与集合B的并:\n");
print(C);
clear(C);
fun_sub(A,B,C);
printf("集合A与集合B的差:\n");
print(C);
clear(C);
fun_J(A,B,C);
printf("集合A与集合B的交:\n");
print(C);
return 0;
}