有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
若序列中有多个指定的数,需要一起删除。
数据范围:序列长度和序列中的值都满足 
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出为一行,删除指定数字之后的序列。
6 1 2 3 4 5 9 4
1 2 3 5 9
5 1 2 3 4 6 5
1 2 3 4 6
int main()
{
int count = 0;
int num = 0;
int delenum = 0;
int nums[50];
scanf("%d", &num);
int i = 0;
int n = 0;
for (i = 0; i < num; i++)
{
scanf("%d", &nums[i]);
}
scanf("%d", &delenum);
for (i = 0; i < num; i++)
{
if (nums[i] == delenum)
{
count++;
for (n = i; n < num; n++)
{
nums[n] = nums[n + 1];
}
i--;
}
}
for (i = 0; i < num - count; i++)
{
printf("%d ", nums[i]);
}
return 0;
}
遇到相同的就把当前的位置用后一位的数字覆盖掉再输出 #include <stdio.h>
int main() {
int n=0;
int arr[51];
int d;
scanf("%d",&n);
int i=0;
for(i=0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
scanf("%d",&d);
for(i=0;i<n;i++)
{
if(arr[i]==d)
arr[i]=51;
}
for(i=0;i<n;i++)
{
if(arr[i]!=51)
printf("%d ",arr[i]);
}
return 0;
}
#include <stdint.h>
#include <stdio.h>
int main() {
int n, a[60] = { 0 }, target;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &target);
//安插代码
return 0;
} int b[60], num = 0;
for(int i = 0, j = 0; i < n; i++){
if(a[i] != target){
b[j] = a[i];
j++;
}
else {
num++;
}
}
for(int i = 0; i < n-num; i++){
printf("%d ", b[i]);
} 思路二 int b[60], num = 0;
for(int i = 0, j = 0; i < n; i++){
if(a[i] == target){
b[j] = i;
j++;
num++;
}
}
for(int i = 0, j = 0, k = 0; i < n; i++){
if(i == b[j]){
j++;
continue;
}
else{
a[k] = a[i];
k++;
}
}
for(int i = 0; i < n-num; i++){
printf("%d ", a[i]);
} 思路三 int num = 0;
for(int i = 0; i < n; i++){
if(a[i] != target)
continue;
else{
for(int j = i; j < n-num; j++){
a[j] = a[j+1];
}
num++;
i--;
}
}
for(int i = 0; i < n-num; i++){
printf("%d ", a[i]);
} #include<stdio.h>
void My_scanf(int arr[],int n) //录入数组
{
int i = 0;
for(i=0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
}
int adjust(int arr[],int k, int n)
{
int i = 0;
int j = 0;
int count = 0;
for(i=0;i<n;i++) //计算数组中需要剔除的数字的个数
{
if(arr[i]==k)
{
count++;
}
}
for(i=0;i<n;i++)
{
if(arr[i]==k) // 移位将需要剔除的全部放到数组后
{
for(j=i+1;j<n;j++)
{
if(arr[j]!=k)
{
int temp =arr[i];
arr[i] = arr[j];
arr[j] = temp;
break;
}
}
}
}
return count;
}
void My_printf(int arr[],int n) // 打印不需要剔除的数
{
int i = 0;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d\n",&n);
int arr[n];
My_scanf(arr,n);
scanf("%d",&k);
int ret = adjust(arr,k,n);
n = n- ret;
My_printf(arr,n);
return 0;
} #include <stdio.h>
int main() {
int n,a[50];
int x,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(x==a[i])
{
a[i]=0;
}
if(a[i]!=0)
printf("%d ",a[i]);
}
return 0;
} #include <stdio.h>
#include <stdlib.h>
int main() {
int n = 0;
scanf("%d", &n);
int* a = (int*)malloc(sizeof(int) * n);
int* b = (int*)malloc(sizeof(int) * n);
for(int i = 0; i <n; i++)
{
scanf("%d", &a[i]);
}
int m = 0;
scanf("%d", &m);
int pb = 0;
//在数组a中值不为m的,放到数组b中
for(int i = 0; i < n; i++)
{
if(m != a[i])
{
b[pb++] = a[i];
}
}
//输出删除的数组
for(int i = 0; i < pb; i++)
{
printf("%d ", b[i]);
}
free(a);
free(b);
a = b = NULL;
return 0;
} #include <stdio.h>
#include <malloc.h>
#include <assert.h>
//p为数组首地址
//x为需要删除的数
//n为数组有效元素的数量
//flag标记是否需要继续进行删除操作
int Dele(int* p, int x, int n, int flag)
{
assert(p);
//每次递归将flag重置为1
flag = 1;
int i = 0;
//寻找待需要删除的位置
for (i = 0; i < n; i++)
{
//记录要删除元素的下标
if (x == *(p + i))
{
flag = 0;
break;
}
}
//进行删除操作操作
while (i < n)
{
//数组从前往后拉
*(p + i) = *(p + i + 1);
i++;
}
//如果flag仍为1,则表明没有元素需要删除,开始归并
if(flag == 1)
{
return 0;
}
//如果程序走到这里,则表明还有元素需要删除
//“1”为本轮删除的元素,“Dele(p, x, n - 1, flag)”为后续删除的元素数量
return 1 + Dele(p, x, n - 1, flag);
}
int main()
{
int n = 0;//数组的数量
int* p = NULL;//数组的首地址
int needDele = 0;//需要被删除的数
int deleNum = 0;//需要被删除的个数
int i = 0;
int flag = 0;
scanf("%d", &n);
//开辟空间,用来存放数组
p = (int*)malloc(sizeof(int) * n);
if (!p)
{
perror("malloc");
return 1;
}
//录入数列
for (i = 0; i < n; i++)
{
scanf("%d", p + i);
}
//录入需要删除的整数
scanf("%d", &needDele);
//进行删除
deleNum = Dele(p, needDele, n, flag);
//输出结果
for (i = 0; i < n - deleNum; i++)
{
printf("%d ", *(p + i));
}
//释放空间
free(p);
p = NULL;
return 0;
} #include <stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int arr[n];//c99use
int i = 0;
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int del = 0;
scanf("%d", &del);
int j = 0;
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]);
}
return 0;
}