键盘再输入一个要删除的数,从数组中删除此数

定义长度20的int数组,键盘读入20个1位数写入数组。键盘再输入一个要删除的数,从数组中删除此数。

编写函数int delnum(int a[20] , int n , int num),功能是:在数组a的前n个元素中,删除值为num的元素。删除后数组中剩余数据的个数作为函数的返回值返回。注意,要删除的数num在数组中可能不只一个。

从数组中删除一个数,所做的操作是该元素后面的各数据全部前移一个存储位置。

主函数如下,请编写delnum函数完善程序功能。

#include<stdio.h>

#define N 20

int delnum(int p[],int n,int num);

int main()

{

    int a[N],num,len,i,seed;

    printf("Input 20 num:");

    for(i=0;i<20;i++)           //给数组N个元素赋值 

        scanf("%d",&a[i]);

    puts("========array========");

    for(i=0;i<N;i++)           //输出数组中所有数据 

        printf("%d ",a[i]);

    puts("");

    printf("Please input delete num:");

    scanf("%d",&num);

    len=delnum(a,N,num);         //调用函数,删除数组a中的num,返回剩余数据个数

    puts("========array========");

    for(i=0;i<len;i++)          //输出删除后的数组数据

        printf("%d ",a[i]);     //注意,这里只输出len个数据

    puts("");

    return 0;

}

【输入形式】输入20个数以及一个要删除的数
【输出形式】先输出数组中初始的20个数,调用函数删除num,再输出删除num后数组剩余元素的值

int delnum(int p[] , int n , int num)
{
	int x,y,z=n;
	for(x=0;x<n;x++)
	{
		if(p[x]==num)
		{
            if(x==z)
            {
               p[x] = '\0';
               break;
            }
			for(y=x;y<z-1;y++)
			{
				p[y]=p[y+1];
			}
            p[z-1] = '\0';
			z--;
			x--;
		}
	}
	return z;
}