先上结果图:

完整代码:

#include <stdio.h>
//初始化集合
int a[1024] = {0}, b[1024] = {0}, c[1024] = {0}, d[1024] = {0}, e[1024] = {0};
int com[1024] = {0}, temp[1024] = {0}, temp1[1024] = {0};
//显示界面
void show()
{printf("\t**************集合操作界面**************\n");printf("\t\t**** 1-**请先输入集合A和B元素在进行以下操作******\n");printf("\t\t**** 2-**求集合A∩B******\n");printf("\t\t**** 3-**求集合AUB******\n");printf("\t\t**** 4-**求集合A-B******\n");printf("\t\t**** 5-**求集合CeA******\n");printf("\t\t**** 0-**退出操作页面******\n");printf("\t******************************************\n");
}
//集合AB元素的填充
void input(int x, int y)
{int i, j;printf("请输入A中元素:\n");for (i = 0; i < x; i++){scanf("%d", &a[i]);getchar();for (j = 0; j < i; j++){if (a[i] == a[j]){printf("出现重复元素");a[i] = 0;}}}printf("请输入B中元素:\n");for (i = 0; i < y; i++){scanf("%d", &b[i]);getchar();for (j = 0; j < i; j++){if (b[i] == b[j]){printf("出现重复元素");b[i] = 0;}}}
}
//集合A,B的交集
int Mixed(int x, int y)
{int i, j, k = 0;for (i = 0; i < x; i++){for (j = 0; j < y; j++){if (a[i] == b[j]){                //检测AB集合之间的相同元素c[k] = a[i]; //将相同的元素给空集合保存k++;         //统计c集合中的总个数}}}printf("A∩B={");for (i = 0; i < k - 1; i++){ //k-1作用:预留一个位置printf(" %d,", c[i]);}printf(" %d}\n", c[k - 1]); //输出最后一个元素并附上 }getchar();
}
//集合A,B的并集
int Union(int x, int y)
{int i, j, k = 0, m = 0, n;for (i = 0; i < x; i++){for (j = 0; j < y; j++){if (a[i] == b[j]){                //检测AB集合之间的相同元素c[k] = a[i]; //将相同的元素给空集合保存k++;         //统计c集合中的总个数}}}for (i = 0; i < x; i++){ //将A集合元素放在com集合中com[m] = a[i];m++;}for (i = 0; i < y; i++){ //将B集合元素放在com集合中com[m] = b[i];m++;}for (i = 0; i < x + y - k; i++){ //x+y-k为A,B集合所有元素去掉相同元素的总数for (j = i + 1; j < m; j++){ //if (com[j] == com[i]){for (n = j; n < m; n++){com[n] = com[n + 1];}break;}}}printf("AUB={");for (i = 0; i < x + y - k - 1; i++){printf(" %d,", com[i]);}printf(" %d}\n", com[x + y - k - 1]);getchar();
}
//集合A,B的差运算
int Difference(int x, int y)
{int i, j, k = 0;int m;for (i = 0; i < x; i++){for (j = 0; j < y; j++){if (a[i] == b[j]){c[k] = a[i];k++;}}} //以上为交集部分,得出A,B集合中相同元素的总数for (i = 0; i < x; i++){ //将A集合元素放在D集合中d[i] = a[i];}for (i = 0; i < x - k; i++){ //去掉相同元素的个数,进行循环for (j = 0; j < k; j++){if (d[i] == c[j]) //用D集合中的元素与A,B的交集集合C比较元素{for (m = i; m < x; m++){ //如果D集合中第i各元素与集合C相同,则i后的元素前移一位d[m] = d[m + 1];}i--;break;}}}printf("A-B={");for (i = 0; i < x - k - 1; i++){printf(" %d,", d[i]); //输出差集}printf(" %d}\n", d[x - k - 1]); //附上 }getchar();
}
//集合E的填充
void inputE(int elngth)
{int i, j;printf("请输入E中元素:\n");for (i = 0; i < elngth; i++){scanf("%d", &e[i]);getchar();for (j = 0; j < i; j++){if (e[i] == e[j]){printf("出现重复元素");e[i] = 0;}}}
}
//集合A的补集E
int Left(int x, int elength)
{  //与差集相同if (elength < x){printf("E元素数应大于A中元素数\n");return 0;}int i, j, k = 0, m = 0;for (i = 0; i < elength; i++){for (j = 0; j < x; j++){if (e[i] == a[j]){temp1[k] = e[i];k++;}}}for (i = 0; i < elength; i++){temp[i] = e[i];}for (i = 0; i < elength - k; i++)//去掉相同元素的个数,进行循环{ for (j = 0; j < k; j++){if (temp[i] == temp1[j]) //用E集合中的元素与A,E的交集比较元素{for (m = i; m < elength; m++){ temp[m] = temp[m + 1];}i--;break;}}}printf("CeA={");for (i = 0; i < elength - k - 1; i++){printf(" %d,", temp[i]); //输出补集}printf(" %d}\n", temp[elength - k - 1]); //附上 }//getchar();
}
//主函数
int main()
{int x, y, elngth, choice;while (1){show();printf("请输入操作数字:\n");scanf("%d", &choice);if (choice == 0){printf("退出操作页面\n");return 0;}else{switch (choice){case 1:printf("请输入A,B集合元素数\n");scanf("%d %d", &x, &y);input(x, y);printf("请按回车继续!\n");getchar();break;case 2:Mixed(x, y);printf("请按回车继续!\n");getchar();break;case 3:Union(x, y);printf("请按回车继续!\n");getchar();break;case 4:Difference(x, y);printf("请按回车继续!\n");getchar();break;case 5:printf("A集合的长度:%d\n", x);printf("请输入集合E元素数:\n");scanf("%d", &elngth);inputE(elngth);Left(x, elngth);printf("请按回车继续!\n");getchar();break;default:break;}}}
}

C语言用数组实现集合的交集、并集、差集、补集相关推荐

  1. oracle 并集 时间_Oracle集合运算符 交集 并集 差集

    集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...

  2. JAVA Hashset求集合的交集并集差集

    JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...

  3. python集合的交集并集差集对称差集操作

    补一下数学基础 集合间的数学操作交集: 调用函数intersection()或者 & ,原集合不发生变化并集: 调用函数union() 或者 | ,原集合不发生变化差集: 调用函数differ ...

  4. 63.集合之交集并集差集

    set1 = {2, 3, 6, 7, 9, 11, 12, 13, 15, 19} # 其他:符号操作 print(6 in set1) set2 = {2,3,4,5,6} set3 = {2,3 ...

  5. A和B 单链表表示 集合,求其 交集 并集 差集

    A和B 单链表表示 集合的 交集 并集 差集 /* A和B 单链表表示 集合的 交集 并集 差集 */ //#include <iostream> //using namespace st ...

  6. java求集合的交集、差集和并集

    一.本文介绍两种写法 1原生写法 2com.google.guava写法 <dependency>     <groupId>com.google.guava</grou ...

  7. js数组交集并集差集

    数组交集并集差集 /*1. 数组并集concat方法展开运算符reduce*/ const arr1 = [1, 3, 89, 20, 3, 6, 1, 47, 81, 6] const arr2 = ...

  8. python 数组 交集 并集 差集

    python 数组 交集 并集 差集 1.交集 a = [1, 3, 5] b = [2, 3, 4] print(set(a).intersection(set(b))) print(set(a) ...

  9. java实现交集并集差集

    java实现交集并集差集 ***`package 第一次模拟测试; import java.util.ArrayList; import java.util.HashSet; import java. ...

最新文章

  1. 这是我读过写得最好的【秒杀系统架构】分析与实战!
  2. 只知道GAN你就OUT了——VAE背后的哲学思想及数学原理
  3. jackson 反序列化string_Java 中使用Jackson反序列化
  4. Oracle Proc开发之Makefile的编写模板
  5. php开启curl和openssl
  6. html的带分页的表格写法,Html表格分页
  7. 如何查看自己的ubutu系统是32位的还是64位的
  8. 数据结构实验之排序七:选课名单(卡内存的一道题。。坑)
  9. MPC实现自动驾驶轨迹跟踪
  10. TensorFlow 学习------第一天
  11. LINUX内核协议栈分析初探
  12. Android之Canvas撕衣服
  13. 大学英语综合教程四 Unit 1 课文内容英译中 中英翻译
  14. TOP100summit:【分享实录】爆炸式增长的斗鱼架构平台的演进
  15. Jquery 调用 浏览器打印机
  16. 循序渐进学SAP系列(一):--SAP该如何入门
  17. 用地预审与选址意见书
  18. Spring Boot/Cloud 界面与安全设计
  19. word换pdf并且自动生成目录
  20. matlab变步长龙格库塔法,matlab龙格库塔法变步长龙格库塔法.doc-资源下载在线文库www.lddoc.cn...

热门文章

  1. Z平台-数据交换平台应用
  2. git shanchu stash_git-stash用法小结
  3. vue编写问卷调查表(包含单选,多选,文本输入,时间输入的选择题)
  4. 使用OpenCV对图像进行两种平移操作(图像的尺寸变化与图像的尺寸不变)
  5. 元”启长三角 共享新未来!长三角数字干线元宇宙创新发展论坛暨第一届长三角元宇宙日在长三角绿洲智谷·赵巷成功举办
  6. 设置Word2007目录与页码之间的前导符样式
  7. 05-Oracle中的对象(视图,索引,同义词,系列)
  8. Java获取时间(总结)
  9. 什么是导体、绝缘体、半导体、绝缘材料?什么叫电流的热效应、磁效应、化学效应?
  10. python库——pprint