输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素

发布时间:2024-05-17 12:27 发布:上海旅游网

问题描述:

输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素(如a[5]={2,3,4,5,6},b[6]={3,5,7,9,10,-1},则输出2、4、6、3、7、9、10、-1)。

问题解答:

楼上两个答案都是漏洞百出,麻烦自己去试一下能不能行再来回答。。
我猜lz的意思是两个数组中都出现的则不要输出,题目中“则输出2、4、6、3、7、9、10、-1”这里面的3应该是不要输出的吧?

如果是这样,我给出的答案是
#include <iostream>
using namespace std;
void main()
{
int a[5]={2,3,4,5,6};
int b[6]={3,5,7,9,10,-1};
int i,j;
for (i=0; i<5; i++)
for (j=0; j<6; j++)
if (a[i]==b[j])
a[i]=b[j]=0;
for (i=0; i<5; i++)
if (a[i])
cout << a[i] << "\t";
for (i=0; i<6; i++)
if (b[i])
cout << b[i] << "\t";
}

这行代码相比其他的方法优点是算法很简单;但是它有缺陷,两个数组中不能有0。当然如果要比较有0的数组可以把代码中a[i]=b[j]=0替换成别的用不上的数字,最后的输出if的条件也要作相应的修改,比如a[i]!=X。
我偷懒了直接用了lz提供的两个数组,lz可以自己把两个数组替换掉或者干脆在前面放cin输入,循环体中ij的值也相应地修改一下。
此代码在vc++6.0中测试通过。

main(){
int a[5]={2,3,4,5,6};
int b[6]={2,4,6,3,7,9,10,-1}

int i,j;

for(i=0;i<5;i++)
for(j=0;j<6;j++){if(a[i])!=b[j])cout<<a[i];
}

for(i=0;i<6;i++)
for(j=0;j<5;j++){if(b[i])!=a[j])cout<<b[i];
}

}

main(){
int a[5]={2,3,4,5,6};
int b[6]={2,4,6,3,7,9,10,-1}
for(int i=0;i<5;i++)
for(int j=0;j<6;j++){if(a[i])!=b[j])cout<<a[i];
}
}

热点新闻