c++找公共元素:求两个数组中的公共元素(顺序以第一个数组为准)如果没有公共元素,则输出no。
答案:2 悬赏:70 手机版
解决时间 2021-02-15 03:17
- 提问者网友:最爱你的唇
- 2021-02-14 09:40
c++找公共元素:求两个数组中的公共元素(顺序以第一个数组为准)如果没有公共元素,则输出no。
最佳答案
- 五星知识达人网友:大漠
- 2021-02-14 11:16
#include "stdafx.h"
#include
#include
void sort(int *src, int len);
int main()
{
printf("请输入第一个数组的数据个数
");
int n;
scanf("%d", &n);
printf("请输入第一个数组所要包含的数据,请用空格隔开
");
std::vector nn;
do
{
int ni;
scanf("%d", &ni);
nn.push_back(ni);
} while (nn.size() < n);
printf("请输入第二个数组的数据个数
");
int m;
scanf("%d", &m);
printf("请输入第二个数组所要包含的数据,请用空格隔开
");
std::vector mm;
do
{
int mi;
scanf("%d", &mi);
mm.push_back(mi);
} while (mm.size() < m);
std::vector jg;
if (n >= m)
{
for (int i = 0; i < m; i++)
{
std::vector::iterator ret1;
std::vector::iterator ret2;
ret1 = std::find(nn.begin(), nn.end(), mm[i]);
if (ret1 != nn.end())
{
ret2 = std::find(jg.begin(), jg.end(), mm[i]);
if (ret2 == jg.end())
jg.push_back(mm[i]);
}
}
}
else
{
for (int i = 0; i < n; i++)
{
std::vector::iterator ret1;
std::vector::iterator ret2;
ret1 = std::find(mm.begin(), mm.end(), nn[i]);
if (ret1 != mm.end())
{
ret2 = std::find(jg.begin(), jg.end(), nn[i]);
if (ret2 == jg.end())
jg.push_back(nn[i]);
}
}
}
if (jg.size() > 0)
{
printf("公共元素为:
");
int *a = jg.data();
sort(a, jg.size());
for (int i = 0; i < jg.size(); i++)
{
printf("%d ", a[i]);
}
}
else printf("公共元素为:
no");
printf("
");
system("pause");
return 0;
}
void sort(int *src, int len)
{
int tem;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len - i - 1; j++)
if (src[j] > src[j + 1])
{
tem = src[j];
src[j] = src[j + 1];
src[j + 1] = tem;
}
}
}
刚刚没注意看你的要求是要按第一个数组顺序排,所以上面的代码我写成了结果以从小大到排的,现在修改一下,按你的要求结果按第一个数组顺序排列,代码如下:
#include "stdafx.h"
#include
#include
int main()
{
printf("请输入第一个数组的数据个数
");
int n;
scanf("%d", &n);
printf("请输入第一个数组所要包含的数据,请用空格隔开
");
std::vector nn;
do
{
int ni;
scanf("%d", &ni);
nn.push_back(ni);
} while (nn.size() < n);
printf("请输入第二个数组的数据个数
");
int m;
scanf("%d", &m);
printf("请输入第二个数组所要包含的数据,请用空格隔开
");
std::vector mm;
do
{
int mi;
scanf("%d", &mi);
mm.push_back(mi);
} while (mm.size() < m);
std::vector jg;
for (int i = 0; i < n; i++)
{
std::vector::iterator ret1;
std::vector::iterator ret2;
ret1 = std::find(mm.begin(), mm.end(), nn[i]);
if (ret1 != mm.end())
{
ret2 = std::find(jg.begin(), jg.end(), nn[i]);
if (ret2 == jg.end())
jg.push_back(nn[i]);
}
}
if (jg.size() > 0)
{
printf("公共元素为:
");
for (int i = 0; i < jg.size(); i++)
{
printf("%d ", jg[i]);
}
}
else printf("公共元素为:
no");
printf("
");
system("pause");
return 0;
}
#include
#include
void sort(int *src, int len);
int main()
{
printf("请输入第一个数组的数据个数
");
int n;
scanf("%d", &n);
printf("请输入第一个数组所要包含的数据,请用空格隔开
");
std::vector
do
{
int ni;
scanf("%d", &ni);
nn.push_back(ni);
} while (nn.size() < n);
printf("请输入第二个数组的数据个数
");
int m;
scanf("%d", &m);
printf("请输入第二个数组所要包含的数据,请用空格隔开
");
std::vector
do
{
int mi;
scanf("%d", &mi);
mm.push_back(mi);
} while (mm.size() < m);
std::vector
if (n >= m)
{
for (int i = 0; i < m; i++)
{
std::vector
std::vector
ret1 = std::find(nn.begin(), nn.end(), mm[i]);
if (ret1 != nn.end())
{
ret2 = std::find(jg.begin(), jg.end(), mm[i]);
if (ret2 == jg.end())
jg.push_back(mm[i]);
}
}
}
else
{
for (int i = 0; i < n; i++)
{
std::vector
std::vector
ret1 = std::find(mm.begin(), mm.end(), nn[i]);
if (ret1 != mm.end())
{
ret2 = std::find(jg.begin(), jg.end(), nn[i]);
if (ret2 == jg.end())
jg.push_back(nn[i]);
}
}
}
if (jg.size() > 0)
{
printf("公共元素为:
");
int *a = jg.data();
sort(a, jg.size());
for (int i = 0; i < jg.size(); i++)
{
printf("%d ", a[i]);
}
}
else printf("公共元素为:
no");
printf("
");
system("pause");
return 0;
}
void sort(int *src, int len)
{
int tem;
for (int i = 0; i < len; i++)
{
for (int j = 0; j < len - i - 1; j++)
if (src[j] > src[j + 1])
{
tem = src[j];
src[j] = src[j + 1];
src[j + 1] = tem;
}
}
}
刚刚没注意看你的要求是要按第一个数组顺序排,所以上面的代码我写成了结果以从小大到排的,现在修改一下,按你的要求结果按第一个数组顺序排列,代码如下:
#include "stdafx.h"
#include
#include
int main()
{
printf("请输入第一个数组的数据个数
");
int n;
scanf("%d", &n);
printf("请输入第一个数组所要包含的数据,请用空格隔开
");
std::vector
do
{
int ni;
scanf("%d", &ni);
nn.push_back(ni);
} while (nn.size() < n);
printf("请输入第二个数组的数据个数
");
int m;
scanf("%d", &m);
printf("请输入第二个数组所要包含的数据,请用空格隔开
");
std::vector
do
{
int mi;
scanf("%d", &mi);
mm.push_back(mi);
} while (mm.size() < m);
std::vector
for (int i = 0; i < n; i++)
{
std::vector
std::vector
ret1 = std::find(mm.begin(), mm.end(), nn[i]);
if (ret1 != mm.end())
{
ret2 = std::find(jg.begin(), jg.end(), nn[i]);
if (ret2 == jg.end())
jg.push_back(nn[i]);
}
}
if (jg.size() > 0)
{
printf("公共元素为:
");
for (int i = 0; i < jg.size(); i++)
{
printf("%d ", jg[i]);
}
}
else printf("公共元素为:
no");
printf("
");
system("pause");
return 0;
}
全部回答
- 1楼网友:玩家
- 2021-02-14 12:50
void getmin(int array[],int arraylen,int out[],int outlen)
{//outlen应该为2
int i,j;
for(i=0;i for(i=0;i for(j=0;j if(array[i] out[j] = array[i];//记录该数
break;
}
//如果out中的数小,则看看下一个out数会不会比这个大
}
}
}
{//outlen应该为2
int i,j;
for(i=0;i
break;
}
//如果out中的数小,则看看下一个out数会不会比这个大
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯