文档介绍:离散数学实验报告专业班级:12级计算机本部一班学号:2012122014010161.【实验题目】命题逻辑实验四2.【实验目的】姓名:鲍佳珍实验成绩:掌握用计算机求集合的交、并、差和补运算的方法。3.【实验内容】编程实现集合的交、并、差和补运算。4、【实验要求】C或C++语言编程实现5.【算法描述】(1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6,7,9,10},B={2,,3,4,7,8,10},E={1,2,3,4,5,6,7,8,9,10},输入数组A,B,E(全集),输入数据时要求检查数据是否重复(集合中的数据要求不重复),要求集合A,B是集合E的子集。以下每一个运算都要求先将集合C置成空集。(2)二个集合的交运算:AÇB={x|xÎA且xÎB}把数组A中元素逐一与数组B中的元素进行比较,将相同的元素放在数组C中,数组C便是集合A和集合B的交。C语言算法:for(i=0;i<m;i++)for(j=0;j<n;j++)if(a[i]==b[j])c[k++]=a[i];(3)二个集合的并运算:AÈB={x|xÎA或xÎB}把数组A中各个元素先保存在数组C中。将数组B中的元素逐一与数组A中的元素进行比较,把不相同的元素添加到数组C中,数组C便是集合A和集合B的并。C语言算法:for(i=0;i<m;i++)c[i]=a[i];for(i=0;i<n;i++){for(j=0;j<m;j++)if(b[i]==c[j])break;if(j==m){c[m+k]=b[i];k++;}}(4)二个集合的差运算:A-B={x|xÎA且xÏB}将数组A中的元素逐一与数组B中的元素进行比较,把数组A与数组B不同的元素保存在数组C中,数组C便是集合A和集合B的差A-B。C语言算法:for(j=0;j<m;j++){for(i=0;i<n;i++){if(A[j]==B[i]){C[k]=A[j];k++;break;}if(j==n){C[k]=A[i];k++;}}(5)集合的补运算:~A=B-A={x|xÎB且xÏA}将数组E中的元素逐一与数组A中的元素进行比较,把不相同的元素保存到数组C中,数组C便是集合A关于集合E的补集。求补集是一种特殊的集合差运算。C语言算法:k=0;for(i=0;i<M;i++){for(j=0;j<N;j++){if(B[i]==A[j])break;}if(j==N){C[k]=B[i];k++;}6.【源程序(带注释)】#include<>intmain(){inta[80],b[80],c[80],e[80];intm,n,k,l,i,j,p,q,o;l=1;while(l){printf("###欢迎使用集合运算软件###\n");printf("#请输入您要输入的A数组内存放的数字的数目:");scanf("%d",&m);//输入一个数组内需要存放的数字的数目printf("#请输入集合A中的元素:");scanf("%d",&a[0]);for(i=1;i<m;i++){scanf("%d",&a[i]);for(j=0;j<i;j++)if(a[i]==a[j]){printf("#您的输入有误!集合中的元素不能相同!\n");printf("#请重新输入:");for(i=0;i<m;i++)scanf("%d",&a[i]);}//判断数组内是否存在重复的数字,若有,能重新输入}printf("#请输入您要输入的B数组内存放的数字的数目:");scanf("%d",&n);printf("#请输入集合B中的元素:");scanf("%d",&b[0]);for(i=1;i<n;i++){scanf("%d",&b[i]);for(j=0;j<i;j++)if(b[i]==b[j]){printf("#您的输入有误!集合中的元素不能相同!\n");printf("#请重新输入:");//重新输入集合Bfor(i=0;i<n;i++)scanf("%d",&b[i]);}}printf("#请输入您要输入的E数组内存放的数字的数目:");//输入B集合的元素数scanf("%d",&o);printf("#请输入集合E中的元素:");scanf("%d",&e[0]);for(i=1;i<o;i++){scanf("%d",&e[i]);for(j=0;j<i;j++)if(e[i]==e[j]){printf("#您的输入有误!集合中的元素不能相同!\n");printf("#请重新输入:");//重新输入集合Efor(i=0;i<o;i++)scanf("%d",&e[i]);}}k=0;for(i=0;i<m;i++)for(j=0;j<n;j