C语言:两数组合并,并升序排列。
定义函数voidMerge(inta[],intn,intb[],intm),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数...
定义函数void Merge(int a[], int n, int b[], int m),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。
#include<stdio.h>
void Merge(int a[],int n,int b[],int m)
{ int i,j,k;
for(i=0,j=0;i<m+n&&j<m;i++)
if(a[i]>b[j])
{ for(k=m+n;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}
for(i=0;i<m+n;i++)
printf("%d ",a[i]);
}
int main()
{ int a[100]={1,3,5,7};
int b[4]={2,4,6,8};
Merge(a,4,b,4);
}
上列代码只能排前面的,最后一个出错,求高手指导并改正哦,谢谢咯!! 展开
#include<stdio.h>
void Merge(int a[],int n,int b[],int m)
{ int i,j,k;
for(i=0,j=0;i<m+n&&j<m;i++)
if(a[i]>b[j])
{ for(k=m+n;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}
for(i=0;i<m+n;i++)
printf("%d ",a[i]);
}
int main()
{ int a[100]={1,3,5,7};
int b[4]={2,4,6,8};
Merge(a,4,b,4);
}
上列代码只能排前面的,最后一个出错,求高手指导并改正哦,谢谢咯!! 展开
2个回答
展开全部
nt i,j,k;
for(i=0,j=0;j<m;i++)
if(a[i]>b[j])
{for(k=i+m;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}else if(i>n){a[i]=b[j];}
}
for(i=0,j=0;j<m;i++)
if(a[i]>b[j])
{for(k=i+m;k>=i;k--)
a[k]=a[k-1];
a[i]=b[j];
j++;
}else if(i>n){a[i]=b[j];}
}
追问
不明白,求全代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
噢 这个。这个最好是在用一个数组,否则要在a数组中将元素向后移动,有点麻烦。楼主想怎么做?
更多追问追答
追问
把b数组一到a中,然后再升序。
追答
已知a,b数组元素个数吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询