C语言,怎么使用指针实现合并两个有序数组

这是我写的程序,还请各位同学帮忙看看... 这是我写的程序,还请各位同学帮忙看看 展开
 我来答
恶灵的加护
2014-03-23 · TA获得超过969个赞
知道小有建树答主
回答量:492
采纳率:0%
帮助的人:490万
展开全部
各种语法错误,这个连编译都不行。

i++是指自加1,后面不能加数字;
最上面的解引用那里估计你括号放错了,*号要在括号外面
数字a和数组b,直接int *i=a;就行,不需要再取地址。
printf中,i是一个整数,不能被解引用。
追问
- -   ,新手才刚刚开始学习。
您方便写个例子,学习学习下
追答
你这个只是简单的合并,就把第二个接在第一个后面,
还是把两个排好序的给归并,保持队列的排序。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
此间的少年1234
推荐于2018-05-07 · 超过25用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:47.6万
展开全部
这是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++);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wardliu
2014-03-23 · TA获得超过1971个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:86.3万
展开全部
i++2 这条语句有误吧 你改下i+=2
(*n+d)=.........这里的i 改成d
= =! 你的三目运算用的有点蛋疼
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式