急急急:如何用C语言清除数组中的所有元素?
#include
/*头文件,他包含函数体用的函数如printf(),scanf()都在库函数stdio.h中,*/void
main()
for(i=0;i=9;i++)
a[i]=i;/*数组初始化给数组赋值,
c语言数组元素的删除
对于数组删除,一般就是使用后面数组元素前移的操作,来覆盖前一元素,达到删除的效果。。。。
例如数组a[10],要删除a[5]这个元素,那么只需要把后面的元素前移一位就行了,也就是a[5]=a[6],a[6]=a[7],a[7]=a[8],这样子a[5]这个元素的内容就会被全部抹杀掉了。。。。
不过这里存在一个问题,你一个结构体数组前移的时候,如何判断有多少个元素要前移呢。。。。
所以我的做法是在结构体里面定义一个标示符int flag。。。。
当对这个结构体数组元素赋值时,如a[10].name=”KING” 时,那么就是说下标值为10的元素是存在的,赋完值后,来个a[10].flag=1 来标记一下。。。。
这样做的话,我们可以进行这样的删除操作了,如删除下标值为5的元素——
int i=5;
for(int j=i+1;a[j].flag==1;i++,j++)
{
a[i]=a[j];
/* 结构体数组可以直接这样子做,它会自动把a[i]里面的变量等于a[j]里面对应的变量 */
}
a[i].flag=0;
/* 如果你里面原来有10个元素,那么删除了其中一个,那就剩下9个,a[9]那个位置应该为空,一一把里面的元素清空太麻烦,直接把它的标示符flag等于0,就表示该位置为空的 */
C语言中怎么删除数组中的一个元素
方法:
删除就是将其下标所在位置的中的内容置为空(也就是0),然后从此位置开始,后面的内容前移,再把最后那个位置的置为空(就是0)。
前移无非就是 类似 arr[ i – 1] = arr[ i ] 这个意思。
当可以确认数组中存放的都是整数,你可以将这个元素置为-1表示删除。增加就是先检查你的数组中有没有-1的元素,如果有,就设置为你的值。如果全部都满了,就开一个更大的数组,把数据拷贝过去。把相应位后面的一次前移一位,就是实现了删除操作,可以用个for循环就可以实现了。
数组的内存分配:变量在内存中是从大到小寻址的(内存中以字节为单位),比如00000000 00000000 00000000 00001010在内存中,00001010的地址是最小的;而数组则有些不同,数组的元素自然的从上往下排列 存储,整个数组的地址为首元素的地址。 (但是组成元素的字节还是按从大到小)。
C语言,删除数组元素
void main()
{
int i,j,n;
int a[10];
int k=0; //记录删除数据的个数
printf(“请输入需要删除的数:\n”);
scanf(“%d”,n);
printf(“请输入10个元素的数组: \n”);
for (i=0;i10;i++)
scanf(“%d”,a[i]);
for (i=0;i10;i++)
if (a[i]==n)
{
for (j=0;i+j9;j++)
a[i+j]=a[i+j+1];
k++;//删除数据的个数加1
a[10-k] = 0; //清除最后一个已经前移过的数据
}
for (i=0;i10-k;i++)//输出剩余的数据,后面的数据为0代表已经被删除的无意义数据,不必再输出了。
printf(“%5d”,a[i]);
}
C语言删除数组指定元素
C语言删除数组指定元素的源代码如下:
#include stdio.h
main()
{
char s[80],c;
int j,k;
printf(“\nEnter a string: “);
gets(s);
printf(“\nEnter a character: “);
c=getchar( );
for(j=k=0;s[j]!= ‘\0’;j++)
if(s[j]!=c)
s[k++]=s[j];
s[k]= ‘\0’;
printf(“\n%s\n”,s);
system(“pause”);
}
扩展资料
自定义函数代码如下
function delarrayval2($arr,$v){
$keyarr = array_keys($arr, $v);
if(count($keyarr)){
foreach ($keyarr as $key) {
unset($arr[$key]);
}
}
return $arr;
}