C语言经典题每日一题( 序列中删除指定数字)

242 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情

在本篇文章里,我将分享一道很经典的C语言题———序列中删除指定数字,并且分享解题思路,希望可以帮助到你

问题描述:

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

数据范围:序列长度和序列中的值都满足1≤n≤50

输入描述:

第一行输入一个整数(0≤N≤50)。 第二行输入N个整数,输入用空格分隔的N个整数。 第三行输入想要进行删除的一个整数。

输出描述:

输出为一行,删除指定数字之后的序列 输入:2 输出:2

示例1

输入:6 1 2 3 4 5 9 4 输出:1 2 3 5

以下代码均经过牛客测试,均正确,请放心测试

代码:

#include <stdio.h>

int main()  
{
    int n=0;
    scanf("%d",&n);
    int arr[n];

    //接收n个数字
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }

    int del=0;//接收要删除的值
    scanf("%d",&del);

    int j=0;//j作为下标锁定的位置就是用来存放不删除的数据的
    for(i=0;i<n;i++)
    {
        if(arr[i]!=del)
        {
            arr[j]=arr[i];
            j++;
        }
    }
    for(i=0;i<j;i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

结果展示:

img

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,摘抄几句话,对你,也对我: 1.别把安全感建立在别人身上,那样就等于把自己人生的选择权,交给了别人。

2.要么努力到出类拔萃,要么就懒得乐知天命。最怕你见识打开了,可努力又跟不上,骨子里清高至极,性格上又软弱无比。

3.想要过什么样的生活,就得有什么样的代价。我没有承担那种代价的能力,所以我甘愿选择默默无闻的平凡。有人活得不平凡,而你只是没看到他的代价而已;何况活成那种不平凡,是没有回头路可走的。 ——七董年

没有人会关心你付出过多少努力,撑得累不累,摔得痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷。

5.重蹈覆辙的下场就是自取其辱,失而复得的东西根本回不到当初,重读一本书可能会有新的感悟,但不会有新的结局。

最后如果觉得我写的还不错,请不要忘记==点赞==✌,==收藏==✌,加==关注==✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!