第2个回答 推荐于2018-05-07
这是c++版的
#include<stdio.h>
#include<stdlib.h>
int* arrange(int *p,int m, int *q,int n){
int *p_last = p+m-1;
int *q_last = q+n-1;
int *pc , *result ;
pc = result= (int *)malloc(sizeof(int));
while(p<=p_last&&q<=q_last){
if(*p<=*q) *result =*p++;
else *result = *q++;
result++;
}
while(p<=p_last){
*result++ =*p++;
}
while(q<=q_last){
*result++ =*q++;
}
return pc;
}
int main(){
int a[]={1,2,3,7,8,9};
int m = 6;//a[]中元素的个数
int b[]={4,5,6};
int n = 3;//b[]中元素的个数
int *i = a;
int *j = b;
i = arrange(i,m,j,n);
for(int k = 0;k<m+n;k++){
printf("%d ",*i++);
}
}
第3个回答 2014-03-23
有较多的错误,以下是正确代码:
#include<stdio.h>
int arrange(int *n,int *m)
{
int i=0,j=0,k;
for(i=0;i<6;i++)
{
if (*(n+i)>*(m+j) && *(n+i)!=0)
{
k=5;
while(k>i)
*(n+k)=*(n+k-1),k--;
*(n+i)=*(m+j);
j++;
}
if(*(n+i)==0)
*(n+i)=*(m+j++);
}
return 0;
}
int main()
{
int a[6]={1,2,5};
int b[3]={4,7,9};
int *i=a;
int *j=b;
int m;
arrange(i,j);
for(m=0;m<6;m++)
printf("%d",a[m]);
return 0;
}