C语言中删除一个数组元素

先定义一个数组,赋值
再输入一个数
判断这个数组里有没有
如果有就删除他
最后输出删完后的数组

谢谢各位大人拉~~~~~~~~~~~~~~小弟没多少分只有30 这里都贡献了吧
我在补充一下吧
定义一个数组 比如a[10]={1,3,7,61,86,12,75643,8989,1,3}
然后输入一个数x比如说是3
然后删除这个3
最后输出9个数的数组

那可不可以用脚标判断 然后后位代替前位的方法 最后输出前9位数,实现对这树的删除。

如果数组里全是3 那我输入要删除的3之后 楼主想要一个什么结果呢
是9个3 还是一个元素也不输出?
下面的程序可能能实现楼主的意思
#include<stdio.h>

void main()
{
int a[10]={1,3,7,61,86,12,75643,8989,1,3},n,i;
printf("input the number to delete:");
scanf("%d",&n);
for(i=0;i<10;i++)
if(a[i]!=n)
printf("%d ",a[i]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-10
可以设定 先把数组所有值都赋值
查找可以通过循环比对
for (i=0;i++;i<arraylenth)
{
if x==a[i]
{ flag=0;
a[i]=null;
}
}
然后通过判断flag来看看是否找到数据
将数组元素置空来表示删除
第2个回答  2008-08-10
找到这个数后把后面的数依次前提一位,输出时丢弃找到的最后几个..
#define N 10
main(){
int a[N]={1,3,7,61,86,12,75643,8989,1,3} ;
int i,j,tem,delnum;
tem=0;
printf("\nEnter del num:");
scanf("%d",&delnum);
for(i=0;i<N-tem;i++){
if(a[i]==delnum){
tem++;
for(j=i;j<N-tem;j++)
a[j]=a[j+1];
}
}
printf("\n");
for(i=0;i<N-tem;i++)
printf("%d,",a[i]);

getch();
return;
}
第3个回答  2008-08-10
一般的数组元素无法删除,只能将值改变为另一个特定的值,然后发现这个值就直接转向下一个元素.

用链表可以删除表中的一个结点.
第4个回答  2020-03-08
一维数组啊,其实实现一个数的删除很简单啊,只要不输出就行,你说的那个方法也行,或者直接记住这个下标,输出时加个条件判断就行,达到目的就好了,不必拘泥形式。
#include<stdio.h>
int
main()
{
int
a[2][2]={1,2,3,4},n;
printf("input
the
number
to
delete:");//输入查找的数
scanf("%d",&n);
for(int
i=0;i<2;i++)
for(int
j=0;j<2;j++)
if(a[i][j]==n)
a[i][j]=0;//找到修改成0,只能修改
不能删除
//输出
for(int
i=0;i<2;i++)
for(int
j=0;j<2;j++)
printf("%d",a[i][j]);
getchar();
getchar();
return
0;
}