C语言求两个字符集合的交集和并集

编程,从键盘分别输入两个都不多于20个元素的
字符集合a和b,计算并输出集合a和b 的交集和并
集,其中的元素从小到大排列,若交集为空则输
出NULL。例如,
输入:1a2b3c4d5@6$7& /* 集合a */
0abc9!@#x246 /* 集合b */
输出:246@abc /* 交集 */
!#$&012345679@abcdx /* 并集 */
输入:54321 /* 集合a */
zxycba /* 集合b */
输出:NULL /* 交集 */
12345abcxyz /* 并集 */

int i,count=0,ch1[256]={0},ch2[256]={0};
char s1[20],s2[20];

//统计字符串1的字符情况
for(i=0;i<20&&s1[i]!='\0';i++)
ch1(s1[i])++;
//统计字符串2的字符情况
for(i=0;i<20&&s2[i]!='\0';i++)
ch2(s2[i])++;

//交集
for(i=0;i<256;i++)
if(ch1[i]>0&&ch2[i]>0)
{
putchar(i);
count++;
}
if(count==0)
printf("NULL");
putchar('\n');
//并集
count=0;
for(i=0;i<256;i++)
if(ch1[i]>0&||ch2[i]>0)
{
putchar(i);
count++;
}
if(count==0)
printf("NULL");
putchar('\n');追问

能补完吗。

追答

char s1[20],s2[20];
后加入
scanf("%s",s1);
scanf("%s",s1);
就行了

追问

在下是C语言新手,麻烦一下把完整格式写一遍,这个程序编译错误啊。谢谢了,我加分。

追答

#include
#include

void main()
{

int i,count=0,ch1[256]={0},ch2[256]={0};
char s1[20],s2[20];

gets(s1);
gets(s2);

//统计字符串1的字符情况
for(i=0;i0&&ch2[i]>0)
{
putchar(i);
count++;
}
if(count==0)
printf("NULL");
putchar('\n');
//并集
count=0;
for(i=0;i0||ch2[i]>0)
{
putchar(i);
count++;
}
if(count==0)
printf("NULL");
putchar('\n');
getchar();
}

原来这里有点错误://统计字符串1的字符情况
for(i=0;i<20&&s1[i]!='\0';i++)
ch1(s1[i])++;
//统计字符串2的字符情况
for(i=0;i<20&&s2[i]!='\0';i++)
ch2(s2[i])++;
那天直接打上去的,没有运行过,
不好意思.

温馨提示:答案为网友推荐,仅供参考
相似回答