bianchengxz
2017-08-01 08:16
采纳率: 33.3%
浏览 904
已采纳

c语言编程问题,编写函数实现给定功能

编写一个已经从小到大排好序的一维数组目的是把里面重复的删除例如原来的数组是
2 2 2 3 3 4 5 5 6 6 6 6 7 8 9 10 10,程序运行完为2 3 4 5 6 7 8 9 10,我自己写出来了,但是不知道哪里出错了,求各位大神帮帮忙
int i;
n=0;
for(i=0;i<N;i++)
{
if(a[i]<a[i+1])
{a[n]=a[i];n++;}
}
return n;
}
这里的a数组是题目给出来的,N是a数组里面元素个数,n是程序结束后a数组里面还有多少个元素。在线等,谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • hpu刘 2017-08-01 08:48
    已采纳

    循环到数组最后一位会发生越界错误,需要对最后一位单独判断,试试下面的:
    int i;
    n=0;
    for(i=0;i<N-1;i++)
    {
    if(a[i]<a[i+1])
    {a[n]=a[i];n++;}
    }
    if(a[N-2]<a[N-1])
    a[n]=a[N-1];
    n++;
    return n;
    }

    点赞 评论
  • das白 2017-08-01 08:28

    循环到最后一位的时候 会越界么?

    点赞 评论
  • bianchengxz 2017-08-01 08:37

    会,那该怎么改才能实现那个功能?

    点赞 评论
  • ECHONZ 2017-08-01 08:43

    定义一个变量保存当前a[n],初始值为a[0], 用这个变量去比较就行

    点赞 评论
  • 图片说明不知道这样行不行,

    点赞 评论
  • hys0124 2017-08-02 08:12

    for(i=0;i<N;i++) 改成 for(i=0;i<N-1;i++) 改成

    点赞 评论

相关推荐 更多相似问题