怎么用c语言将两个数组并起来?

如题所述

看代码,写了几种数组的合并:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void character()
{
char c1[]={'H','e','l','l','o'};
char c2[]={' ','w','o','r','l','d','!'};
int k=0;
char new_c[100];
for(int i=0;i<sizeof(c1);i++)//注意是sizeof()
new_c[k++]=c1[i];
for( i=0;i<sizeof(c2);i++)
new_c[k++]=c2[i];
new_c[k]='\0';
puts(new_c);

}
void string()
{
char s1[]={"hello,"};
char s2[]={"c语言!"};
int k=0;
char new_s[100];
for(int i=0;i<strlen(s1);i++)//注意是strlen()
new_s[k++]=s1[i];
for(i=0;i<strlen(s2);i++)
new_s[k++]=s2[i];
new_s[k]='\0';
puts(new_s);
}
void number()
{
int num1[]={1,2,3},*p1=num1;
int num2[]={4,5,6,'\0'};//整型数组,字符数组是没有结束符号,自己加入‘\0’
int new_num[100];
int k=0;
for(int i=0;i<sizeof(num1)/sizeof(int);i++)
{
new_num[k++]=*(p1++);
}
for(i=0;num2[i]!=0;i++)
{
new_num[k++]=num2[i];
}
new_num[k]='\0';
for(i=0;new_num[i]!=0;i++)
{
printf("%d ",new_num[i]);
}
puts("");

}
void main()
{
character();//字符数组的合并
string();//字符串的合并
number();//整型数组的合并,做法是一样的

}

运行截图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-19

#include<stdio.h>

int main()

{

int a[10],b[10],c[20],i,j,m,n,t;

scanf("%d",&m);

for(i=0;i<m;i++)

scanf("%d",&a[i]);

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",&b[i]);

for(i=0;i<m;i++)

c[i]=a[i];

for(i=m;i<n+m;i++)

c[i]=b[i-m];

for(i=0;i<m+n-1;i++)

for(j=0;j<m+n-1-i;j++)

{

if(c[j]<c[j+1])

{

t=c[j];

c[j]=c[j+1];

c[j+1]=t;

}

}

for(i=0;i<m+n;i++)

printf("%d ",c[i]);

}


第2个回答  2013-03-30
就是用一个为l1+l2的数组,1-l1存a1,l1+1~l1+l2存a2.
第3个回答  2012-09-19
int main()
{
int a[10];
int b[10];
int c[20];
for(int i=0;i<10;i++)
c[i]=a[i];
for(int j=10;j<20;j++)
c[j]=a[j-10];
return 0;
}追问

for(int j=10;j<20;j++)
c[j]=a[j-10];
啥意思?
不用考虑两个数组中相同的元素吗?

追答

不好意思啊,写错了,应该是c[j]=b[j-10];一个数组中允许有相同的元素啊

本回答被网友采纳
相似回答