7_2 从数组中删除数据 C语言

【问题描述】

定义长度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后数组剩余元素的值
【样例输入输出1】

Input 20 num:1 9 0 6 1 3 8 6 2 1 5 4 0 0 5 4 9 5 8 7

========array========

1 9 0 6 1 3 8 6 2 1 5 4 0 0 5 4 9 5 8 7

Please input delete num:0

========array========

1 9 6 1 3 8 6 2 1 5 4 5 4 9 5 8 7

【样例输入输出2】

Input 20 num:8 9 8 7 5 7 5 5 0 2 3 0 2 1 7 1 5 5 7 0

========array========

8 9 8 7 5 7 5 5 0 2 3 0 2 1 7 1 5 5 7 0

Please input delete num:5

========array========

8 9 8 7 7 0 2 3 0 2 1 7 1 7 0

【样例说明】下划线上是输入的数与删除数,其它是提示信息以及输出的数组数据。用1个空格分隔输出数据

【评分标准】正确完成函数功能,正确声明与调用


#include<stdio.h>
int delnum(int a[20], int n, int num)
{
    int i, j; int t = 0;
    for (i = 0; i < n; i++)
    {
        if (a[i] == num)
        {
            for (j = i+1; j < n; j++)
            {
                a[j-1] = a[j];
            }
            t++;
        }
    }
    return n-t;
}
int main()
{
    int a[20],i,l,num;
    printf("请输入20个一位数:\n");
    for (i = 0; i < 20; i++)
    {
        scanf("%d",a+i);
    }
    printf("存储的数据:");
    for (i = 0; i < 20; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    printf("请输入想删除的数据:");
    scanf("%d",&num);
    l = delnum(a, 20, num);
    printf("存储的数据:");
    for (i = 0; i < l; i++)
    {
        printf("%d ", a[i]);
    }
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^