删除数组中指定的数字

简介: 删除数组中指定的数字

删除数组中指定的数字


题目:

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


b463ff393b81c1c7b663e83c036e0408_47e47caf98d8441fad8699a36d00c834.png


代码实现如下


#include<stdio.h>
int main()
{
  int arr[] = { 1,2,3,4,2,5 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int del = 0;//指定的数字
  scanf("%d", &del);
  int i = 0;
  printf("删除前->");
  for (i = 0; i < sz; i++)
  {
  printf("%d ", arr[i]);
  }
  printf("\n");
  int j = 0;//作为下标锁定的位置用来存放不被删除的数据
  for (i = 0; i < sz; i++)
  {
  if (arr[i] != del)
  {
    arr[j] = arr[i];
    j++;
  }
  }
  printf("删除后->");
  for (i = 0; i < j; i++)
  {
  printf("%d ", arr[i]);
  }
  return 0;
}


b7c329dc694b1c4c7cc3d0eaf0e05976_c8bf6de107f24297ae4a8d5d5cd58bc3.png


这里还有一种更简单粗暴的方法


直接遍历数组,不是指定数字就打印
否则跳过


代码实现如下


#include<stdio.h>
int main()
{
  int arr[] = { 1,2,3,4,2,5 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int del = 0;//指定的数字
  scanf("%d", &del);
  int i = 0;
  printf("删除前->");
  for (i = 0; i < sz; i++)
  {
  printf("%d ", arr[i]);
  }
  printf("\n");
  printf("删除后->");
  for (i = 0; i < sz; i++)
  {
  if (del != arr[i])
  {
    printf("%d ", arr[i]);
  }
  }
  return 0;
}


0be4bd5f913214e5ac3262315a90d360_e3a91e69224048249ac350a4fdb236a8.png


目录
打赏
0
0
0
0
4
分享
相关文章
数组中插入一个数字
数组中插入一个数字
84 0
剑指offer-2.不修改数组找出重复的数字
剑指offer-2.不修改数组找出重复的数字
81 0
【删除指定数字——leetcode]
【删除指定数字——leetcode]
65 0
剑指offer_数组---数组中重复的数字
剑指offer_数组---数组中重复的数字
54 0
剑指offer 02. 不修改数组找出重复的数字
剑指offer 02. 不修改数组找出重复的数字
75 0
对一个list取前M个数字和后M个数字,形成两个列表
对一个list取前M个数字和后M个数字,形成两个列表
95 0
找出数组中只出现一次的数字
找出数组中只出现一次的数字
134 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等