我想用以下的程序删除数组中重复的元素,但运行时却出了错,希望大师指点并帮忙修正,谢谢

编译时没有报错,但运行的结果却没有输出任何东西,程序也无法自己结束,貌似出现了死循环

#include<stdio.h>
int main()
{
int a[19]={1,1,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
void del(int *p,int a[19]);
int *p=a;
do
{
if(*p==*(p+1))
{
del(p,a);
continue;
}
p++;
}
while(p<=a+17);
for(p=a;p<=a+18;p++) printf("%d ",*p);
return 0;
}
void del(int *p,int a[19])
{
for(;p<=a+17;p++) *p=*(p+1);
}

#include<stdio.h>
int main()
{
int a[19]={1,1,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
void del(int *b,int a[19]);
int *p=a;
int m=17;
do
{
if(*p==*(p+1))
{
del(p,a);
m--;
continue;
}
p++;
}
while(p<=a+m);
for(p=a;p<=a+18;p++) printf("%d ",*p);
return 0;
}
void del(int *b,int a[19])
{
for(;b<=a+17;b++) *b=*(b+1);
}

while判断的条件到最后会因为数组后几个元素都是10而不能结束,于是就一直死循环,加个变量吗,元素向前移动一次,m减一才能跳出循环
温馨提示:内容为网友见解,仅供参考
无其他回答