编写函数int delnum(int *a , int num , int n),用于在长度是n的数组a中,删除一个值为num的元素。删除后数组的长度作为函数的返回值返回。注意,num在数组中可能不只一个。
主函数如下:
int main( )
{ int a[N],i,num,m;
scanf(“%d”,&num);
键盘输入N个数到数组a中;
m=delnum函数调用,在数组a中删除指定的数num,并返回剩余数据个数;
输出删除了num后的数组a;
return 0;
}
定义并编写delnum函数
1111111111111111
int delnum(int *a , int num , int n)
{
int cnt=0;
for(int i=0; i<n; i++)
{
if(num==a[i])
{
cnt++;
}
}
return num-cnt;
}
#include
#define N 10
int numdel(int *a,int num ,int size){
int i ,n,temp;
n=0;
for(i=0;i<size;i++){
if(a[i]==num) {
n++;
temp=i;
//当a[i]=num时,后面的数向前移1位
while(temp<size-n){
a[temp]=a[temp+1];
temp++;
}
//因为前移一位,所以i-1
i=i-1;
}
}
//多余的补零
for(i=size-n;i<size;i++){
a[i]=0;
}
return (size -n);
}
void main(){
int a[N]={0,1,2,2,2,5,6,7,8,9};
int m,num1;
int i;
scanf("%d",&num1);
m=numdel(a,num1,N);
printf("num is :%d\n",m);
for(i=0;i<N;i++){
printf(" %d",a[i]);
}
}
int delnum(int p[], int n, int num)
{
int *pData = new int[n];
pData = p;
int nLen = 0;
for (int i = 0;i < n;i ++)
{
if (p[i] != num)
{
p[nLen ++] = pData[i];
}
}
return nLen;
}