#include <stdio.h>//整数序列删除一个数,其他数顺序不变
int main()
{int arr[50] = {0};//int arr[50] = {1,2,3,4,5};int n = 0;int del = 0;int i = 0;int j = 0;scanf("%d",&n);for(i = 0;i < n;i++)scanf("%d",&arr[i]);scanf("%d",&del);for(i = 0;i < n;i++)printf("%d ",arr[i]);printf("\n");for(i = 0;i < n;i++){if(arr[i] == del)break;}for(j = i;j < n - 1;j++){arr[j] = arr[j+1];}for(i = 0;i < n-1;i++)printf("%d ",arr[i]);printf("\n");return 0;
}
这种代码编写方法只能删除一个指定数字,如果指定数字出现多次,结果并不正确。
#include <stdio.h>//整数序列删除一个数,其他数顺序不变
int main()
{int arr[50] = {0};//int arr[50] = {1,2,3,4,5};int n = 0;int del = 0;int i = 0;int j = 0;scanf("%d",&n);for(i = 0;i < n;i++)scanf("%d",&arr[i]);scanf("%d",&del);for(i = 0;i < n;i++)printf("%d ",arr[i]);printf("\n");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]);printf("\n");return 0;
}
用一个下标 j 来记录不等于 del 的值,下标 j 的值最后等于数组未删除元素的个数。
这里是定义了一个很大的数组,但在支持C99标准的编译器里可以使用变长数组。
有时候一个下标解决不了的问题,可以同时使用两个下标。