#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标准的编译器里可以使用变长数组。
有时候一个下标解决不了的问题,可以同时使用两个下标。