當前位置:首頁 » 編程語言 » 用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]);}
}