本文收集整理关于c语言删除数组指定元素的相关议题,使用内容导航快速到达。
内容导航:
Q1:c++或c语言编写程序删除数组中指定位置处的元素.... 我想输入“删除第几
把要插入的位置后面的所有元素均向后移一位,数组长度增加1;把需要删除的元素后面所有元素均向前移动一位,这是要删除的元素已经被覆盖了,同时数组长度减去1
Q2:用C语言编写在一个数组中删除指定元素的程序,以下是本人写的一些代码,由于初学,麻烦高手指点修改
#include
#define ARR_SIZE 5、int Delete(int *a, int n, int x);
void main()
{
int a[ARR_SIZE-1], x, i, n; printf("Please enter array numbers:\n");
scanf("%d", &n); printf("Please enter array:\n");
for (i=0; i
scanf("%d", &a[i]);
} printf("Please enter a number what you want to delet:\n");
scanf("%d", &x); if( Delete(a, n, x) == -1 )
printf("can not find the number!\n") ;
else
{
printf("After delet %d:\n", x);
for(i=0; i < n - 1; i++)
{
printf("%d ", a[i]);// 不要加地址符,我还以为我编译器坏了,囧
}
}
}
int Delete(int *a, int n, int x)
{
int *p=NULL, *pos=NULL; for (p=a; p {
if (*p == x)
break;
} if( p >= a + n )
return -1 ; for( ; p < a + n - 1 ; ++p )//循环反了,后边的数据会把前边的覆盖
{
*p=*(p+1);
} return 0 ;
}
Q3:C语言 数组 实现删除一数组中的某指定元素。
123456789101112#include
Q4:C语言,从数组中删除一个指定元素。
del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。
函数的原型为:
int del (int a[10],int n,int x)
(1)请实现这个函数,并完成测试。
[参考解答]
[cpp]view plaincopy
#include
intdel(inta[],intn,intx);
intmain()
{
inta[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,78,87,64,59,61,76};
inti,n;
n=del(a,20,77);
printf("剩余%d个:\n",n);
for(i=0;i printf("%d",a[i]); printf("\n"); return0; } intdel(inta[],intn,intx)//删除长度为n的a数组中值为x的元素 { intp=0,q=0;//用p和q两个变量 while(q { if(a[q]!=x)//只有当元素值不等于x才往p标识的位置上“搬” { a[p]=a[q]; p++; } q++; }//最后的效果,等于x的元素都没有“搬”过来,它们被“覆盖”了,也即被删除了 returnp;//p代表的,就是删除后的元素个数 } [参考解答] [cpp]view plaincopy #include intdel(inta[],intn,intx); intmain() { inta[20]={58,59,61,62,64,67,68,76,77,77,77,80,80,85,86,87,88,88,92,96}; inti,n; n=del(a,20,77); printf("剩余%d个:\n",n); for(i=0;i printf("%d",a[i]); printf("\n"); return0; } intdel(inta[],intn,intx)//删除长度为n的a数组中值为x的元素 { intp=0,q; while(a[p] p++; q=p;//阶段②:p将标记住这个待删除的位置 while(a[q]==x&&q q++; while(q a[p++]=a[q++];//阶段③:将要保留的元素,直接“覆盖”到p标记住的位置,逐个赋值,结果就是将等于x的元素删除了 returnp;//p代表的,就是删除后的元素个数 }
(2)如果在函数调用时,要求数组中的元素呈升序排列呢?
Q5:C语言删除数组指定元素
void main()
{
int i,j,n;
int a[10];
int k=0; //记录删除数据的个数
printf("请输入需要删除的数:\n");
scanf("%d",&n);
printf("请输入10个元素的数组: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
if (a[i]==n)
{
for (j=0;i+j<9;j++)
a[i+j]=a[i+j+1];
k++;//删除数据的个数加1、 a[10-k] = 0; //清除最后一个已经前移过的数据
} for (i=0;i<10-k;i++)//输出剩余的数据,后面的数据为0代表已经被删除的无意义数据,不必再输出了。
printf("%5d",a[i]);
}WWW.YiJiTaO.▶Com