C语言合并两个数组
发布网友
发布时间:2022-04-19 09:47
我来回答
共4个回答
热心网友
时间:2023-09-15 06:27
不知道楼主是要普通的合并然后排序呢还是高级算法里的归并排序。后者的话建议看看百度百科http://ke.baidu.com/view/90797.htm
前者。
#include<stdio.h>
int
main()
{
int
a[100],b[100];
int
anum,bnum,i,j,k,temp;
printf("请输入数组a的元素个数:");
scanf("%d",&anum);
for(i=0;i<anum;i++)//数组a输入
scanf("%d",&a[i]);
printf("请输入数组b的元素个数:");
scanf("%d",&bnum);
for(i=0;i<bnum;i++)//数组b输入
scanf("%d",&b[i]);
k=anum+bnum;//计算数据总个数
for(i=0;i<bnum;i++)//b数组合入a数组
a[anum+i]=b[i];
for(i=0;i<k-1;i++)
//选择排序
for(j=i+1;j<k;j++)
if(a[i]<a[j])
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i<k;i++)//输出最终数组
printf("%8d",a[i]);
return
0;
}
热心网友
时间:2023-09-15 06:27
#include <stdio.h>
int main()
{
int a[5]={3,4,5,6,7};
int b[4]={11,22,33,44};
int c[9]={0};
int i=0,j;
for (;i<sizeof(a)/sizeof(int);i++)
c[i]=a[i];
j=i;
for (j=0;j<sizeof(b)/sizeof(int);j++,i++)
c[i]=b[j];
return 0;
}
#include <stdio.h>
int main()
{
int a[5]={3,4,5,6,7};
int b[4]={11,22,33,44};
int c[9]={0};
int i=0,j;
for (;i<5;i++)
c[i]=a[i];
j=i;
for (j=0;j<4;j++,i++)
c[i]=b[j];
return 0;
}
或者用memcpy,更简单
热心网友
时间:2023-09-15 06:28
#include<stdio.h>
void main()
{
int a[5]={3,4,5,6,7};
int b[4]={11,22,33,44};
int c[9]={0};
int i,j;
for (i=0;i<5;i++)
c[i]=a[i];
for (j=0;j<4;j++,i++)
c[i]=b[j];
for(i=0;i<9;i++)
printf("%d,",c[i]);
printf("\n");
}
楼上的答案中间的“j=i”是多余的。
热心网友
时间:2023-09-15 06:28
合并数组的操作,具体算法依赖于合并的规则。
其通用流程如下:
1
建立一个足够容纳两个数组所有元素的目标数组。如果规则规定将一个数组合并到另一个之中,那么需要保证目标数组有可以容纳两个数组的空间,否则会出现越界。
2
遍历其中一个数组,并赋值到目标数组中。如果是一个数组合并到另一个,那么此步可以省略;
3
遍历另一个数组,按照规则插入到目标数组中。
在不同规则下,合并算法会有差异,如将长为lb的b数组附加到长为la的a数组结尾的操作,可以写作
int i;
for(i = 0; i < lb; i ++)
a[la+i]=b[i];而将长度均为l的数组a,b,交替合并到c中,可以写作
int i;
for(i = 0; i < l; i ++)
{
c[i*2] = a[i];
c[i*2+1] = b[i];
}不管是何种方式,合并的本质就是,把a和b的每个元素,赋值到目标数组的对应位置上即可。
c语言,怎样合并数组
//两个数组合并,参考代码:#include "stdio.h"int d=0; //用于记录数组c的大小,和数组c的输出类的一些操作void main(){ int a[50],b[50],c[100]; int i,j,k; //i表示a数组的大小 j表示b数组的大小 k用于数组的输出 printf("数组a的输入,输入一个数,表明你要输入...
同C语言合并两个数组
3 遍历另一个数组,按照规则插入到目标数组中。在不同规则下,合并算法会有差异,如将长为lb的B数组附加到长为la的A数组结尾的操作,可以写作 int i;for(i = 0; i < lb; i ++) A[la+i]=B[i];而将长度均为l的数组A,B,交替合并到C中,可以写作 int i;for(i = 0; i < l;...
c语言中的merge函数
要实现数组的合并,首先需要理解C语言中数组的本质——它们是固定大小的连续内存块。因此,合并两个数组意味着重新分配内存以容纳更多的元素,并将这些元素从源数组复制到新的内存位置。这个过程涉及到指针操作和内存管理。要创建一个自定义的merge函数,你需要考虑以下几个步骤:1. 确定合并策略:是创建一...
请问C语言中将两个数组合并,并且合并后的数组无相同元素,怎么编程?求...
//假定数组SendByte[] 每个元素的值 不大于 0xff, 那么1个int 可用 1 字节 传送:for (i=0;i<5;i++) sb[i]= (unsigned char) SendByte[i];sb[5]='\0';for (i=0;i<5;i++) printf("%x ",sb[i]);printf("\n");return 0;} ...
请问如何使用C语言把两个数组合并在一个数组里?
int input(int *p,int n){ char i,ch;for(i=0;i<n;i++){ if((ch=getchar())=='\n')break;else if(ch>='0' && ch<='9')ungetc(ch,stdin);scanf("%d",p+i);} return i;} int main(int argc,char *argv[]){ int a[21],b[10],i,j,k;printf("Input array a.....
如何用C语言编程将两个有序数组a,b合并成一个数组c
int i = j = k = 0;//循环比较,将小的插入到C数组中 while ( i < 3 && j < 3) { if (a [i] < b [j]) c[k++] = a[i++];else c[k++] = b[j++];} //处理其中一个数组剩下 while (i < 3) c[k++] = a[i++];while( j < 3) c[k++] = b[j++]...
c语言中合并两个降序数组,使合并后的数组仍然保持降序排列
int cmp(const void*a,const void*b){//快速排序比较函数 int *x=(int*)a;int *y=(int*)b;return *y-*x;} int main(){ int a[N]={9,7,5,3,1};int b[N]={8,6,4,2,0};int sum[2*N]={0};//合并数组 int k=0;//合并数组元素个数的计数 for(int i=0;i<5;i+...
合并两个数组 a=[1,7,9,2,5] b=[-1,7,9,2,5,6,8,-2]C语言
int i=0,j=0,k=5;for(i=0;i<5;i++)*(c+i)=*(a+i);for(j=0;j<8;j++){ for(i=0;i<5;i++)if(*(c+i)==*(b+j)break;if(i==5)*(c+k++)=*(b+j);} for(i=0;i<k;i++)printf("%4d",*(c+k));printf("\n");} 以上程序合并ab两个数组,并保留一...
一个C语言程序问题,合并两个数组元素,相同的元素只输出一个,并按大小...
c[n] = a[i];i++;n++;} while (i < p);} 我解释一下吧,你第一个判断a[i]
c语言怎么把两个一维数组合并成一个?不需要排序
再定义一个数组。然后赋值 int a[3] = {1, 2, 3};int b[3] = {4, 5, 6};int c[6] = {0};memcpy(c, a, 3 * sizeof(int));memcpy(c + 3, b, 3 * sizeof(int));