C语言里删除数组怎么删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言里删除数组怎么删除相关的知识,希望对你有一定的参考价值。

题目:有一个已排好序的的数组,今输入 一个数,按原来 排序的规律将他删除`
我不会删除,先用0代替
main()
int a[11]=1,4,6,9,13,16,19,28,40,100;
int temp1,temp2,number,end,begin,i,j;
printf(" \narray a:\n");
for (i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("Insert data:");
scanf("%d",&number);
end =a[9];
begin=a[0];
if (number> end ||number<begin)
printf("the data is not in the array!");
else
for (i=0;i<10;i++)
if(a[i]==number)
a[i]=0;


printf("\nNow ,array a:\n\n");
for (i=0;i<10;i++)
printf("%6d",a[i]);


不过好像也不行```
有没有高手帮个忙
啊``1楼的不可以啊`````````````````````````````````````````````````````````
2楼的,我要的就是要把他删除``只是不会才用 0代替了````可以把删除的源程序仔细点给我好吗?

你的数组是是一块连续的内存,不能直接delete其中的一个,而且它还不是new出来的,更不能delete了。。。
如果你非要实现删除一个元素的效果的话,建议你使用stl里的vector,作用跟数组差不多,删除的时候用erase()就可以了,不过这样vector会把之后的所以元素迁移,影响效率。最好的方法是自己写个单链表来存你的数据,要实现你的删除,就删除个节点好了。
参考技术A for (i=0;i<10;i++)
if(a[i]==number)
a[i]=0;

上面语句的条件是输入数在数组中,如果不在,当然就没删除了
可以用
int j
for (i=0;i<10;i++)
int j=0;
if(a[i]==number)
for(j=i;j<9;j++)
a[i]=a[i+1]; //这里实现把后面的数字前传

if (j==0)printf("the data is not in the array!");

如果你一定要实现删除数的话,那么把找到的数后面的数依次赋值给前面一个
参考技术B #include <stdlib.h>
#include <stdio.h>

int main ()

int a[10]=1,4,6,9,13,16,19,28,40,100;
int NumberTmp,number,end,begin,i,j;
int LengthOfArray;
int TestNumber;

LengthOfArray=10;//in your program there are 11 numbers in the array[a];
TestNumber=LengthOfArray;//the testnumber is used to test whether the array number is deleted;
printf(" \narray a:\n");
for (i=0;i<LengthOfArray;i++) printf("%5d",a[i]);
printf("\n");
printf("Delete data:");
scanf("%d",&number);
end =a[LengthOfArray];
begin=a[0];
if (number> end ||number<begin)
printf("the data is not in the array!");
else

for (i=0;i<LengthOfArray;i++)
if(a[i]==number)
if(i==(LengthOfArray-1))LengthOfArray--;//if the number is the last one ,then the
//length of the array decrease 1;
else
for(j=i;j<LengthOfArray-1;j++)
a[j]=a[j+1];

LengthOfArray--;



if(LengthOfArray==TestNumber)printf("the data is not in the array.!\n");


printf("\nNow ,array a:\n\n");
for (i=0;i<LengthOfArray;i++)
printf("%6d",a[i]);
printf("\n");
system("pause");

本回答被提问者采纳
参考技术C 这个程序没有删除任何东西啊。。。
你可以用for循环删除
for(i=0;i<10;i++)

delete a[i];

C语言里怎样判断数组里的一个元素为空还是为0

null 表示是0还是空?
刚设立一个数组时,里面的元素是都为0还是都为空?

NULL表示是空,即什么也没有。
刚设立一个数组时,里面的元素是你定义数组的类型,数值不确定
例如:char ch[4];
现在里面是随机值,同wk_wangkui的回答,
memset(ch,'0',sizeof(char)*4);这时ch里的数值是字符型的‘0’。
参考技术A 刚建立的数组既不是null (C程序没有null这个概念,面向对象才有null)也不是0,是不确定!!!
原来内存这块放的什么还是什么,如果数组你不初始化拿来就用,谁也不知道里面是什么,C是不检查的
参考技术B 空是a[0]='\0'
0的话看你是什么样的数组了,假设是整型的,a[i]=0
参考技术C 空格的ascii是0
0的ascii是48

以上是关于C语言里删除数组怎么删除的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎样实现对数组数据的删除、修改?

C语言中怎样实现对数组数据的删除、修改?

C语言中怎样实现对数组数据的删除、修改?

用C语言实现一维数组中删除第N个元素的程序怎么写

C语言,查找数组里重复出现的数字;

在c语言中输入数组两个数组,查找重复元素并输出怎么写啊