当前位置:首页 » 编程语言 » 用c语言排列两个数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言排列两个数组

发布时间: 2023-03-08 19:07:41

1. c语言,连接2个数组的方法

连接两个数组有点问题,for(x=0;x<6;x++) 数组长度怎么确定array.length 不能用6来表示
可以写个方法,将两数组合并成一个数组
也可以用API函数 memory

2. c语言两个一维数组输出排序并合并

简单代码如下:

说明:之所以把merge函数定义成返回数组长度,是因为后续会有重复数据合并功能的merge版本,考虑到接口一致性。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

intmerge(int*ar1,intlen1,int*ar2,intlen2,int**rtn)
/*++
DeScription:
,
.

Arguments:
ar1-Thefirstsortedarraytobemerged
len1-Thenumofitemsinar1
ar2-
len2-Thenumofitemsinar2
rtn-,
.

ReturnValue:
Thenumofitemsinthemergearray
--*/
{
inti=0,j=0,k=0;
intm=0;
int*res=NULL;

if(ar1==NULL||ar2==NULL||rtn==NULL){
return0;
}

*rtn=(int*)malloc((len1+len2)*sizeof(int));
if(*rtn==NULL){
return0;
}
memset(*rtn,0,(len1+len2)*sizeof(int));
res=(int*)*rtn;

while(i<len1&&j<len2){
if(ar1[i]<=ar2[j]){
res[k++]=ar1[i++];
}else{
res[k++]=ar2[j++];
}
}

while(i<len1){
res[k++]=ar1[i++];
}
while(j<len2){
res[k++]=ar2[j++];
}

returnlen1+len2;
}

intmerge_test()
{
inta1[]={0,1,2,5,8,19,34,43,52};
inta2[]={1,4,5,12,17,33,42,51,53,65,76};
intlen1=sizeof(a1)/sizeof(int);
intlen2=sizeof(a2)/sizeof(int);
inti=0,len=0;
int*a3=NULL;
int*ptr=NULL;

len=merge(a1,len1,a2,len2,&a3);
if(a3==NULL){
printf("a3==NULL ");
return1;
}

ptr=a3;
while(i<len){
printf("a3[%3d]---->%8d ",i++,*ptr++);
}

if(a3!=NULL){
free(a3);
}

return0;
}

intmain(intargc,char*argv[])
{
merge_test();

return0;
}

3. c语言,给定两个二维数组A和B,其元素按递增顺序排列。请编写一个程序设计把数组A和B的元素合并到数

#include <stdio.h>
void main()
{
int a[10],b[10],c[20],i,ia,ib,ic;
printf("please input the first array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("\n");
ia=0;ib=0;ic=0;
while(ia<10&&ib<10)
{
if(a[ia]<b[ib])
{
c[ic]=a[ia];
ia++;
}
else{
c[ic]=b[ib];
ib++;
}
ic++;
}
while(ia<10)
{
c[ic]=a[ia];
ia++;
ic++;
}
while(ib<10)
{
c[ic]=b[ib];
ib++;
ic++;
}
for(i=0;i<20;i++)
{
printf("%5d",c[i]);}
}