c++两个数组合并成一个新数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++两个数组合并成一个新数组相关的知识,希望对你有一定的参考价值。
c++编程题,
控制台输入两个元素不重复的int类型的数组nums1和nums2,无规律。
将两个数组合并成一个数组,合并后,不能有重复的数据出现,并按顺序输出。
列如:
数组1: 16735
数组2: 26745
合并后输出: 1234567
#include<iostream>
using namespace std;
class
SET
int a[40],b[40];
int
numa,numb;
public:
SET(int x[],int len1,int y[],int
len2)
numa=len1;numb=len2;
for(int
i=0;i<len1;i++)
a[i]=x[i];
for(int
i=0;i<len2;i++)
b[i]=y[i];
int notIn(int
elem,int s[],int size)
for(int
i=0;i<size;i++)
if(s[i]==elem)
return 0;
return
1;
void insert();
void
outPut()
cout<<"并集后的数组a的个数:"
<<numa<<endl;
for(int
i=0;i<numa;i++)
cout<<a[i]<<"\\t";
cout<<endl;
;
void SET::insert()
int i=0;
int
count=numa;
do
if(notIn(b[i],a,count)!=0)
a[numa++]=b[i];
i++;
while(i<numb);
void
main()
int a[]=1,3,5,7,9;
int
b[]=1,2,3,4,5,6;
SET
set(a,sizeof(a)/sizeof(a[0]),b,sizeof(b)/sizeof(b[0]));
set.insert();
set.outPut();
本回答由电脑网络分类达人 董辉推荐
1 10
评论
分享
举报
VermouthTaste
推荐于2016-11-04
可以先定义c[9]将数组a,b的数放入,然后再利用冒泡法(其他排序法也可以)对数组c进行排序
追问
能给一段代码么
追答
int main()
int a[4]=1,2,3,4,b[5]=5,6,7,8,9;
int c[9];
int i=0,j,buffer;
for(i=0;i<4;i++)
c[i]=a[i];
for(i=0;i<8;i++)
for(j=0;j<8-i;j++)
if(a[j]>a[j+1])
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
#include <iostream>
using namespace std;
int myinput(int *p,int n)
for(int i=0;i<n;i++)
cin >> p[i];
if(cin.get()=='\\n')
return i+1;
return i;
int main(int argc,char *argv[])
int nums1[100],nums2[50],i,j,k,t,l1,l2;
cout << "Enter the first array(int, Separated by ' ', 'Enter' end)...\\n";
l1=myinput(nums1,50);//输入第一数组
cout << "Enter the second array(int, Separated by ' ', 'Enter' end)...\\n";
l2=myinput(nums2,50);//输入第二数组
for(t=0;t<l2;nums1[l1++]=nums2[t++]);//把nums2连接到nums1后面
for(i=0;i<l1;i++)//排序
for(k=i,j=k+1;j<l1;j++)
if(nums1[k]>nums1[j])
k=j;
if(k-i)
j=nums1[k],nums1[k]=nums1[i],nums1[i]=j;
cout << "\\nThe results are as follows:\\n" << nums1[j=0];
for(i=1;i<l1;i++)//去重并输出
if(nums1[j]!=nums1[i])
cout << ' ' << (nums1[++j]=nums1[i]);
cout << "\\n\\n";
return 0;
运行样例:
php下将多个数组合并成一个数组的方法与实例代码
参考技术A 1.合并数组array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为:
复制代码
代码如下:
array
array_merge
(array
array1
array2…,arrayN)
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
实例如下:
复制代码
代码如下:
$face
=
array("J","Q","K","A");
$numbered
=
array("2","3","4","5","6","7","8","9");
$cards
=
array_merge($face,
$numbered);
shuffle($cards);
print_r($cards);
这将返回如下所示的结果,运行代码:
复制代码
代码如下:
Array
(
[0]
=>
A
[1]
=>
4
[2]
=>
9
[3]
=>
3
[4]
=>
K
[5]
=>
7
[6]
=>
5
[7]
=>
Q
[8]
=>
6
[9]
=>
8
[10]
=>
2
[11]
=>
J
)
2.递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为:
view
sourceprint?array
array_merge_recursive(
array
key,array
values
)
示例如下:
复制代码
代码如下:
$class1
=
array("John"
=>
100,
"James"
=>
85);
$class2
=
array("Micky"
=>
78,
"John"
=>
45);
$classScores
=
array_merge_recursive($class1,
$class2);
print_r($classScores);
这将返回如下结果:
view
sourceprint?Array
(
[John]
=>
Array
(
[0]
=>
100
[1]
=>
45
)
[James]
=>
85
[Micky]
=>
78
)
3.连接两个数组
array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:
view
sourceprint?array
array_merge(array
array1,array
array2[…,array
arrayN])
注意,两个输入数组必须大小相同,不能为空。示例如下:
复制代码
代码如下:
$abbreviations
=
array("AL","AK","AZ","AR");
$states
=
array("Alabama","Alaska","Arizona","Arkansas");
$stateMap
=
array_combine($abbreviations,$states);
print_r($stateMap);
这会返回:
复制代码
代码如下:
Array
(
[AL]
=>
Alabama
[AK]
=>
Alaska
[AZ]
=>
Arizona
[AR]
=>
Arkansas
)
以上是关于c++两个数组合并成一个新数组的主要内容,如果未能解决你的问题,请参考以下文章