深蓝-避重 2021-12-11 14:27 采纳率: 0%
浏览 46

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个空格分隔输出数据

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

  • 写回答

2条回答 默认 最新

  • 苹果小飞翔 2021-12-11 16:01
    关注
    
    #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;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月11日

悬赏问题

  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请