删除数组中指定的数字
题目:
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
代码实现如下
#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; }
这里还有一种更简单粗暴的方法
直接遍历数组,不是指定数字就打印 否则跳过
代码实现如下
#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; }