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数组里面还有多少个元素。在线等,谢谢!
答
循环到数组最后一位会发生越界错误,需要对最后一位单独判断,试试下面的:
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;
}
答
循环到最后一位的时候 会越界么?
答
会,那该怎么改才能实现那个功能?
答
定义一个变量保存当前a[n],初始值为a[0], 用这个变量去比较就行
答
不知道这样行不行,
答
for(i=0;i<N;i++) 改成 for(i=0;i<N-1;i++) 改成