关于C语言中的剔除数组中的数字问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 10:12:11
Description

有一个已经赋值(值从0到10)的整型数组,从键盘任意输入一个数cmp(0<=cmp<=10),剔除数组中与cmp的值相同的所有元素,并保持原数组元素的连续排列.然后将数组中的元素输出

Input

一个整数cmp(0<=cmp<=10)

Output

删除掉cmp后的数组元素 ((并换行回车))

(假设开始的整型数组为int array[10]={2,4,8,4,3,2,9,5,4,3};

Sample Input

4
Sample Output

2 8 3 2 9 5 3

剔除数组中的数字后,后面的数字是不是应该放在剔除的那个位子?我写了程序,可是出错了,帮忙看看哈!谢了
#include<stdio.h>
#define n 10
void main()
{
int a[10]={2,4,8,4,3,2,9,5,4,3};
int x,i,j=0;
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(a[i]==n)
{
a[i]=a[i+1];
j++;
}
}
for(i=0;i<j;i++)
printf("%d ",a[i]);
}

#include<stdio.h>
#define n 10
void main()
{
int a[10]={2,4,8,4,3,2,9,5,4,3};
int x,i,j=0;
scanf("%d",&x);

for(i=0;i<x;i++) /*关键是这个循环一定要正确*/
if(a[i]!=x) a[j++]=a[i];

for(i=0;i<j;i++)
printf("%d ",a[i]);

}

#include<stdio.h>
#define n 10
void main()
{
int a[10]={2,4,8,4,3,2,9,5,4,3};
int x,i,j=0;

scanf("%d",&x);

for(i = 0; i < n; i++) //遍历数组 找到 同样的数
{
if(x == a[i])
{
for (int j = i ; j < n - 1; j ++)//剔除 一个 所以 数组 要 减1
{
a[j] = a[j + 1];

}
break; //剔除结束

}
}
//剔除 一个 所以 数组 要 减1
for (i = 0 ; i < n - 1; i ++ )
{
printf("%d ",a[i]);
}

}