C++ 求两个整数集合(数组)的并集 求大神,前辈指点

2024-12-02 20:22:55
推荐回答(2个)
回答1:

个人觉得函数功能的安排有点缺乏灵活性。看看下面程序(有关函数重新设计了一下):

#include
using namespace std;

//输入数组元素
void input(int a[], int n)
{
for (int i = 0; i < n; i++)
cin >> a[i];
}

//判断key是否在数组x中
int found(int x[], int n,int key){
int i,f=0;
for(i=0; i f=x[i]==key;
return f;
}
//求并
void a_union(int a[],int b[],int c[], int na, int nb, int *nc){
int i,n=na;
for(i=0; i c[i]=a[i];
for(i=0; i if(!found(c,n,b[i])){
c[n]=b[i];
n++;
}
*nc=n; //并的长度
}

//输出数组元素
void output(int a[], int n)
{
int i;
for(i=0; i cout < cout <}

int main (void)
{
const int n=10,i=10;
int l;
int a[n];
int b[i];
int c[n+i];
cout <<"输入数组a" << '\n';
input(a,n);
cout <<"输入数组b" << '\n';
input(b,i);
//求并
a_union(a,b,c,n,i,&l);
//输出数组c
output(c,l);
system("PAUSE");
return 0;
}

回答2:

建议使用C++STL标准库里面的set集合操作,可以很简单的实现并操作,
如果你的问题是如何输入数组,可以使用while循环,然后设定结束的标志,比如输入字符q的时候就结束输入即可。