如何写一个c语言程序求两个集合的交集

Python09

如何写一个c语言程序求两个集合的交集,第1张

定义两个数组存放这两个集合,再定义一个数组存放它们的集合,用类似冒泡排序的算法,遍历数组1中的第一个元素和数组2中每一个元素,若有相同的,则把这个元素放入第三个数组,继续遍历,知道数组1遍历完所有元素,那数组3中的元素,即为两个数组(集合)的交集。

首先,如果是数学上的集合概念,那就说明,集合A自身的每个元素都不相同。

那么,程序就可以简化成,

设数组key[52],用于记录字母出现次数。

扫描一次集合A,把出现的字母计到key的对应位置里。

同理扫描一次集合B。

查看key数组,>=2的对应字母输出到集合C,C就是所求交集。

printf ("请输入第一个集合内容\n")scanf ("%s",a)j=strlen(a)printf ("请输入第二个集合内容\n")scanf ("%s",b)k=strlen(b)printf ("集合的交集是:")///////////////////////计算2个数组的交集//////////////////// //flag标志位,index数组下标标志位 int flag=1, index=0//c[20]保存交集的数组,d[40]保存并集的数组char c[20]="",d[40]=""for (n=0n<jn++){for (m=0m<=km++){if(a[n] == b[m]){c[index++] = a[n]break}}}printf("\n%s\n",c)////////////////////////////计算2个数组的并集/////////////////////// flag=1index=0for (n=0n<jn++){for(m=0m<indexm++){if(d[m] == a[n])flag=0}if(flag){d[index++]=a[n]}flag=1}flag=1for (n=0n<jn++){for(m=0m<indexm++){if(d[m] == b[n])flag=0}if(flag){d[index++]=b[n]}flag=1} printf ("集合的并集是:")