j2466779202 2022-05-09 11:16 采纳率: 100%
浏览 41
已结题

删除数组中的某一元素

以下程序的功能是删除值为x的数组元素。填空完成程序。
#include <stdio.h>
void main()
{
int a[10]={1,3,5,2,2,6,8,10,0,2};
int x,*p,i,count=0;
x=2;
for(p=a;p<a+10-count;p++)
if(*p==x)
{
count++;
for(i=p-a;i<10-count;i++)
_ ;
p--;
}
for(p=a; _ ; p++)
printf("%5d",*p);
printf("\n");
}第一个空应该是删除,第二个是遍历?
没有找到类似的问题解答,
我不理解p<a+10-count,是从后往前开始遍历?那为什么要这样?

  • 写回答

3条回答 默认 最新

  • 树下等苹果 2022-05-09 11:29
    关注

    第一个空是将后面的元素前移,覆盖要删除的那个元素;
    第二个是要遍历的范围;
    p<a+10-count是遍历的范围,count是需要删除元素个数

    
    #include <stdio.h>
    void main()
    {
        int a[10] = { 1,3,5,2,2,6,8,10,0,2 };
        int x, * p, i, count = 0;
        x = 2;
        for (p = a; p < a + 10 - count; p++)
            if (*p == x)
            {
                count++;
                for (i = p - a; i < 10 - count; i++)
                    *p=*p+1;
                p--;
            }
        for (p = a; p<a+10-count+1; p++)
            printf("%5d", *p);
        printf("\n");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 5月9日