题目:输入五个数,输入要删除的数字,打印剩余结果
法一:双指针法
原理:
i向右移动,把符合条件的存入arr[j]中。相当于自身的覆盖。
图中要删除的是数字3,当i经过3时,i为3,此时j不接受,j仍然为2;
而当i经过4时,i为4,j接收,j此时为3;
最后遍历打印数组,范围是j的个数
法二:普通法(for遍历+if判断)
#include<stdio.h> #include<string.h> int main() { int i = 0; int j = 0; int arr[5] = {0}; for (i = 0; i < 5; i++) { scanf("%d", &arr[i]); } int del = 0; scanf("%d",&del); //法一 for (i = 0; i < 5; i++) { if (arr[i] != del) { arr[j] = arr[i]; j++; } } for (i = 0; i < j; i++) { printf("%d", arr[i]); } //法二 /*for (i = 0; i < 5; i++) { if (arr[i] != del) printf("%d", arr[i]); }*/ return 0; }