#include <stdio.h>
#include "math.h"
#define max 100
int RemoveZeroELements(int array[],int n);
int NotZero(int array[],int n,int i);
main()
{
int array[max],v;
int i,length,n;
n=0;
clrscr();
printf("这是一个删除数组中值为0的元素的程序。/n");
printf("输入一个整型数组,最多100个,以-1结束。/n");
while(n<max)
{
scanf("%d",&v);
if(v==-1)break;
array[n]=v;
n++;
}
printf("The old array's length is %d/n",n);
for(i=0;i<n;i++)
printf("%3d",array[i]);
printf("/n");
length=RemoveZeroELements(array,n);
printf("The array's length is %d/n",length);
for(i=0;i<length;i++)
printf("%3d",array[i]);
getch();
}
int RemoveZeroELements(int array[],int n)
{
int i,r;
i=0;
while(i<n)
{
if(array[i]==0)
{
r=NotZero(array,n,i);
if(r)array[i]=r;
else return i;
}
i++;
}
return i;
}
int NotZero(int array[],int n,int pos)
{
int m,r;
for(m=pos+1;m<n;m++)
{
if(array[m]!=0)
{
r=array[m];
array[m]=0;
return r;
}
}
return 0;
}