在不考虑删除的前提下若只为了满足输出要求则可以在遇到指定数字就跳过不打印,虽然该代码通过了,但肯定是不合题意的

#include <stdio.h>
int main()
{
    int n=0;
    int arr[50]={0};
    scanf("%d",&n);
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int m=0;
    scanf("%d",&m);
    for(i=0;i<n;i++)
    {
        if(arr[i]==m)//遇到m则跳过
        {
            continue;
        }
        printf("%d ",arr[i]);
    }
    return 0;
}

因此需要另外创建一个数组来存储删除完指定元素后的数据,代码实现:

#include <stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int arr1[50]={0};
    int arr2[50]={0};//存放删除指定元素后的数据
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr1[i]);
    }
    int m=0;
    scanf("%d",&m);
    int j=0;//记录删除元素后的数据个数
    for(i=0;i<n;i++)
    {
        if(arr1[i]!=m)
        {
            arr2[j]=arr1[i];
            j++;//历遍整个arr1后j等于arr2中元素个数
        }
    }
    for(i=0;i<j;i++)
    {
        printf("%d ",arr2[i]);
    }
    return 0;
}