C语言每日练习题——No.19,序列中删除指定数字

题目链接:

序列中删除指定数字_牛客题霸_牛客网 (nowcoder.com)icon-default.png?t=M1L8https://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7?tpId=107&difficulty=&judgeStatus=&tags=&title=98&gioEnter=menu

解题思路:

1. 在删除代码(核心代码)中,先要定义俩个局部变量 i 和 j

2. 其中 i 用来遍历整个数组,而 j 跟随 i 的步伐,

如果 i 遍历到这个数字不是要删除的数字,则要把这个数字放在变量 j 中,

所以这样随着 i 的遍历,在没有遇到指定数字前,j 的数值是不断在更新的

而当 i 在遍历的过程中遇到了要删除的指定数字时,

变量 j 就不要在随着 i 的遍历而更新数值,即变量 j 就停在指定数字的下面,

但是变量 i 仍然需要向后遍历,

只是当 i 走到指定删除数字的下一个数字时,就要把这个数字赋给变量 j ,

从而达到删除指定数字的目的

当赋给变量 j 后,此时 j 就要向后++(即向后遍历一个数字)了

然后变量 i 再向后遍历一个数字,将这个数字赋给变量 j

最后 j 再向后遍历一个数字

总结:

变量 i 是用来遍历整个数组,而变量 j 是用作存放数据的位置

答案代码:

#include <stdio.h>
int main ()
{
    int data = 0;
    scanf("%d\n",&data);
    int m = 0;
    int arr[50] = {0};
    for (m = 0;m < data;m++)
    {
        scanf("%d ",&arr[m]);//把输入的一行数字放入数组中
    }
    int delete = 0;
    scanf("%d",&delete);//以上均为输入
    
    int i = 0;
    int j = 0;//因为j的值是上一次循环的结果,所以它不能放在循环内部
    for (i = 0;i < data;i++)//用变量i来遍历整个数组
    {
        if (arr[i] != delete)
        {
            arr[j] = arr[i];
            j++;
        }
    }
    //此时的j就是删除数据后的元素个数
    
    for (i = 0;i < j;i++)  //输出最后的结果
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值