首先,如果是数学上的集合概念,那就说明,集合A自身的每个元素都不相同。
那么,程序就可以简化成,
设数组key[52],用于记录字母出现次数。
扫描一次集合A,把出现的字母计到key的对应位置里。
同理扫描一次集合B。
查看key数组,>=2的对应字母输出到集合C,C就是所求交集。
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void){
char a[30],b[20],c[20],i,j,k,t;
srand((unsigned)time(NULL));
for(i=0;i<30;i++)
if(a[i]=rand()%26+'a',i<20)
b[i]=rand()%26+'a';
for(k=i=0;i<30;i++)
for(j=0;j<20;j++)
if(a[i]==b[j]){
for(t=0;tif(c[t]==b[j])
break;
if(t>=k)
c[k++]=b[j];
}
printf("The intersection of A and B are as follows:\n");
for(i=0;iprintf("\n");
return 0;
}