c语言的集合的交并补

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能。集合可以用数组也可以用链表存储。
输入: A={1,2,3,4,5} B={3,4,5,6,7}
输出 A交B={3, 4, 5}
A并B={1,2,3,4,5,6,7}
for(int j=0;j<=count2;j++){
if(a[i]==b[j]){
jiao[num1]=a[i];
num1++;
}
}
}
//求并集
num2=count1+1;//不改变 记录a集合个数的数值
memcpy(bing,a,num2*sizeof(int));//先将a数组复制入bing【】数组
for(int i=0;i<=count1;i++){//用b数组遍历bing
for(int j=0;j<=count2;j++){
if(b[i]==bing[j])
break;
if(j==count2)
bing[百度文库um2++]=b[i];
}
}
//求a对b的补集
for(int i=0;i<=count1;i++){
scanf("%d",&c);
if(c<0)
break;
a[i]=c;
count1=i;
}
printf("请输入第二个集合:\n");
for(int i=0;i<N;i++){
scanf("%d",&c);
if(c<0)
break;
b[i]=c;
count2=i;
}
//求交集
for(int i=0;i<=count1;i++){
}
}
int main(){
int c;
int a[N],count1,b[N],count2;//a,b两个集合,以及数量
int jiao[N],bing[2*N],bu[N];//交并补三个集合
int num1=0,num2=0,num3=0;
printf("请输入第一个集合:\n");
for(int i=0;i<N;i++){
for(int j=0;j<=count2;j++){
if(a[i]==b[j])
break;
if(j==count2){
bu[num3]=a[i];
num3++;
}
}
}
printf("A交B={");
bianli(jiao, num1);
printf("}\n");
printf("A并B={");
bianli(bing, num2);
printf("}\n");
printf("A-B={");
bianli(bu, num3);
printf("}\n");
return 0;
}
A-B={1, 2}
作者 lyc
#include<stdio.h>
#include<string.h>//包含 memcyp()
#define N 20//数组长度
//遍历数组函数
void bianli(int a[2*N],int num){
for(int i=0;i<num;i++){
printf("%d,",a[i]);
相关文档
最新文档