设计一个能够实现两个集合的并和交运算的程序。
要求:集合中的元素限定为英文字母和阿拉伯数字,集合中不允许出现重复元素,集合元素在输入时以“#”为结束标志。用两个单链表A和B分别来表示两个集合。
先分别定义两个数组,往数组里面输入数据,如果是#号就结束输入,并集就是将两个数组结合起来输出,交集就是循环两数组,相同的元素输出来
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a[5],b[5],c[10],d[10],x,y,z;
printf("请输入5个A集合数据,空格隔开,回车结束\n:");
for(x=0;x<5;x++){
scanf("%d",&a[x]);
}
fflush(stdin);
printf("请输入5个B集合数据,空格隔开,回车结束\n:");
for(y=0;y<5;y++){
scanf("%d",&b[y]);
}
printf("集合A的元素有\n");
for(x=0;x<5;x++){
printf("%3d",a[x]);
}
printf("\n集合B的元素有\n");
for(y=0;y<5;y++){
printf("%3d",b[y]);
}
//并集
for(z=0;z<10;z++){
if(z<=4){
c[z]=a[z];
}else{
c[z]=b[z-5];
}
}
printf("\nA和B的并集:\n");
for(z=0;z<10;z++){
printf("%3d",c[z]);
}
//交集
z=0;
for(x=0;x<5;x++){
for(y=0;y<5;y++){
if(a[x]==b[y]){
d[z]=a[x];
z++;
break;
}
}
}
printf("\nA和B的交集:\n");
for(x=0;x<z;x++){
printf("%3d",d[x]);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632