要求:删除某一整数序列(可能有重复的数字)中指定的数字,删除之后,整个序列中元素的前后位置不发生变化。序列的长度和序列中元素大小均为 1~50 。
思路:
该整数序列我们可以将其用数组存储,那么我们知道,数组中删除某一元素之后,其之后的元素将依次往前移动一位,此时就达到了我们删除元素之后,序列中元素位置不发生变化的要求。
代码实现:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);//元素个数
int del = 0;
int i = 0;
int j = 0;
int arr[50] = { 0 };
for (j = 0; j < n; j++)//序列元素的输入
{
scanf("%d", &arr[j]);
}
j = 0;
scanf("%d", &del);//要删除的指定数
for (i = 0; i < n; i++)
{
if (arr[i] != del)
{
arr[j++] = arr[i];
}
}
for (i = 0; i < j; i++)//删除之后,新数组重新打印
//因为删除一个元素之后,少了一个元素,所有数组打印到 j 就结束。
{
printf("%d ", arr[i]);
}
return 0;
}
因为这个题所涉及的知识点,我们都在程序中做了标注,所以如果小伙伴们有问题的话,可以仔细研究代码哦!