c++,求助一下,下面的代码有什么问题,谢谢

任务描述

本关任务:用指针方法编写程序,分别输入两个按从小到大排序的数组 a 和 b,将这两个有序数组合并,使合并后的数组 c 仍是从小到大排列

测试说明

平台会对你编写的代码进行测试:

测试输入: 10 10 15 42 52 59 64 67 73 82 88 3 24 32 57

输入说明: 第一行为n,表示输入数组an个整数。 第二行为从小到大的n个整数。 第三行为m,表示输入数组bm个整数。 第四行为从小到大的m个整数。

预期输出: 10 15 24 32 42 52 57 59 64 67 73 82 88

到大有序的。

错误代码如下

#include<stdio.h>
#define N 1000
#define M 1000
int main()
{
    int a[N],b[M],c[M+N];
    int m,n,*pi,*pj,*ph;
    ph=c;
scanf("%d",&n);
for(pi=a;pi<=a+n-1;pi++)
{
    scanf("%d",pi);
    }
scanf("%d",&m);
for(pj=b;pj<=b+m-1;pj++)
{
    scanf("%d",pj);
}

for(pi=a,pj=b;pi<a+n-1,pj<=b+m-1;pi++,pj++)
{
if(*pi<*pj)
{
    *ph=*pi;ph++;
}
if(*pi>*pj)
{
    *ph=*pj;ph++;}
if(m>n)
{
    if(pj==b+n)
    {
        break;
    }
}
if(n>m)
{
    if(pi==a+m)
        break;
    }

if(n>m)
{
    for(pi=a+m;pi<=a+n-1;pi++)
    {
       *ph=*pi;ph++;
    }
}
if(m>n)
{for(pj=b+n;pj<=b+m-1;pj++)
    *ph=*pj;ph++;
}
for(ph=c;ph<=c+m+n-2;ph++){
    printf("%d ",*ph);

}
return 0;    
}

顺便问下,指针*p前的”*“”什么时候加?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值