那么,程序就可以简化成,
设数组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 ("集合的并集是:")