注意函数自身是否有元素重复的判断,还有要把switch函数放在最后面,小细节。
还有一个小细节就是函数调用直接写,前面不要在加cout;
cout>>chaji(a,b,n);就会在结尾多出来一个数,为循环次数。
#include<iostream>
#define M 1000
using namespace std;
int jiaoji(int a[M],int b[M],int n) {
int i,j,k=0,c[M];
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(a[i]==b[j]) {
c[k++]=a[i];
continue;
}
}
}
for(i=0; i<k; i++)
cout<<c[i]<<" ";
}
int chaji(int a[M],int b[M],int n) {
int i,j,k=0,c[M];
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(a[i]==b[j]) {
c[k++]=a[i];
a[i]=-1;
continue;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<i; j++) {
if(a[i]==a[j]) {
a[i]=-1;
continue;
}
}
}
for(i=0; i<n; i++) {
if(a[i]!=-1)
cout<<a[i]<<" ";
}
}
int bingji(int a[M],int b[M],int n) {
int i,j,k=0,c[M];
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(a[i]==b[j]) {
a[i]=-1;
continue;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<i; j++) {
if(a[i]==a[j]) {
a[i]=-1;
continue;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<i; j++) {
if(b[i]==b[j]) {
b[i]=-1;
continue;
}
}
}
for(i=0; i<n; i++) {
if(a[i]!=-1)
cout<<a[i]<<" ";
}
for(i=0; i<n; i++) {
if(b[i]!=-1)
cout<<b[i]<<" ";
}
}
int main() {
int i,j,n,m,c[M],a[M],b[M];
cout<<"1 :求交集"<<endl;
cout<<"2 :求差集"<<endl;
cout<<"3 :求并集"<<endl;
cout<<"请输入数组元素个数:"<<endl;
cin>>n;
cout<<"A数组"<<endl;
for(i=0; i<n; i++)
cin>>a[i];
cout<<"B数组"<<endl;
for(j=0; j<n; j++)
cin>>b[j];
cout<<"请输入要调用的函数:"<<endl;
cin>>m;
switch(m) { //switch函数要放在最后面,因为要执行函数,需要读取前面的数据
case 1: {
jiaoji(a,b,n);
break;
}
case 2: {
chaji(a,b,n);
break;
}
case 3: {
bingji(a,b,n);
break;
}
default : {
cout<<"你的输入有误!请输入!"<<endl;
break;
return 1;
}
}
return 0;
}
执行结果如下