求教如何用C语言求两个字母集合的交集?

2024-11-23 21:11:09
推荐回答(2个)
回答1:

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

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

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

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

  3. 同理扫描一次集合B。

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

回答2:

#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;t                    if(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;i    printf("\n");
    return 0;
}