[数组删除]如何编写?(语言-c语言)

img


新手入门, 帮忙看下这道题目, 没太看得懂题目的意思, 详细解答一下, 谢谢!

n个数,删除m次。
第二行是n个数,第三行是删除的m次数组元素的位置。
在样例中,3 2 表示数组有3个数,需要删除2次,第二行的 1 2 3是数组的元素。
第三行的 1 1 表示,先删除第1个元素,也就是1,数组中的元素只剩下2 3,然后再删除当前数组的第1个元素,也就是2,数组剩余元素是3.

你最好把样例输出贴出来,我写完代码测试一下
运行结果:

img

代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,m,i,j,pos;
    int p[1000];
    scanf("%d %d",&n,&m); //读取n和m
    
    for(i=0;i<n;i++)
        scanf("%d",&p[i]);
    //开始删除
    for(i=0;i<m;i++)
    {
        scanf("%d",&pos); //删除位置
        for(j=pos-1;j<n-1;j++)
            p[j] = p[j+1];
        n -= 1; //删除后,数组元素个数减少1
    }
    //输出剩余元素
    for(i=0;i<n;i++)
    {
        if(i<n-1)
            printf("%d ",p[i]);
        else
            printf("%d",p[i]);
    }
    
    return 0;
}