54 删除数组元素
作者: Turbo时间限制: 1S章节: 一维数组
问题描述 :
已有一维数组,存储不超过100个整型数据,由用户输入一个元素值,从数组中删除与该值相等的所有元素(考虑到元素值可能重复,因此可能删除多个元素),并输出结果数组。
输入说明 :
用户可输入多组数据,每组数据由三行组成:
第一行:数组元素的个数n
第二行:n个数组元素,由空格分隔
第三行:需要删除的元素
输出说明 :
对于每组输入,输出最后的结果,整数之间以空格分隔。每行的开头与结尾无多余空格。
每组输出占一行。
如果结果数组为空,则输出“Empty array!”。
输入范例 :
5
1 2 3 4 5
3
20
1 2 3 1 2 3 4 5 6 7 1 2 3 1 2 3 4 5 6 7
2
输出范例 :
1 2 4 5
1 3 1 3 4 5 6 7 1 3 1 3 4 5 6 7
#include <stdio.h>
#include <stdlib.h>
int fun(int *count,int k,int num)
{
for(int m=0;m<num;m++)
if(count[m]==k)
return 0;
return 1;
}
int main()
{
int n;
while( scanf("%d",&n) != EOF)
{
int *a=(int *)malloc( sizeof(int)*n );
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int b;
scanf("%d",&b);
int *count=(int *)malloc( sizeof(int)*n );
int num=0;
for(int j=0;j<n;j++)
{
if(a[j]==b)
{
count[num]=j;
num++;
}
}
int left=0;
for(int k=0;k<n;k++)
{
if(fun(count,k,num))
{
if(left==0)
printf("%d",a[k]);
else
printf(" %d",a[k]);
left++;
}
}
if(num==n)
printf("Empty array!");
printf("\n");
}
return 0;
}