【求教c语言大神】求两组整数的异或集

2025年03月19日 12:18
有4个网友回答
网友(1):

首先:输入输出都不对。a和b都是int型数组,可是开始的输入用gets(),最后的输出用%s格式,都是字符串操作。
输入部分
gets(a);
gets(b);
m=strlen(a);
n=strlen(b);
可改为:
for ( m = 0; scanf("%d", &a[m]); m++) if ( getchar()=='\n' )break;
for ( n = 0; scanf("%d", &b[n]); n++) if ( getchar()=='\n')break;
m++, n++;

最后的输出部分:
printf("%s\n",c);
应改为:
for(i=0;i
然后,中间寻找两组整数中相等的元素并删除的那个循环的逻辑结构有问题:
只用一条赋值虽然能够删除当前元素,可是最后一个元素就丢失了;
还有,不知道要不要考虑a或b中有重复元素的情形,如果要考虑,这段循环问题就更多了。
所以最后得到的结果还是不正确。

网友(2):

对于集合的操作,应该先对两个集合分别排序,可以使用C语言的qsort或者C++的sort,根据题意要进行降序排列,然后按照归并的思想对两个集合进行合并,合并之后再排序一次即可。
如果用C++,甚至可以直接用set接收两个数组,然后求并集,得到的结果再转换成vector,并排降序。
你的代码中使用字符串处理,这个思路很奇怪,整型数组怎么用gets去进行读入呢?这完全说不通啊。

网友(3):

你可以先尝试不要用gets去接收整型的数据,

网友(4):

首先你在对c数组排序的时候应该是错了,我感觉应该是
for(i=0;ifor(j=i+1;j而且我感觉前面也有问题,你的
“for(j=0;jif(a[i]==b[j])
{
a[i]=a[i+1];
b[j]=b[j+1];”
中当i=m-1的时候,a[i+1]
就没有意义了,溢出;