题目描述:
编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
#include <stdio.h>
int initialize_the_array(int num,int arry[]);
int Compactlntegers (int *num,int arry[]);
int display_arry(int num,int arry[]);
int main(void)
{
int num;
int arry[1024];
printf("请输入有多少个元素:");
scanf("%d",&num);
printf("请输入%d个元素:",num);
initialize_the_array(num,arry);
Compactlntegers (&num,arry);
printf("显示去掉0后数组:");
display_arry(num,arry);
}
int initialize_the_array(int num,int arry[])
{
int i;
for(i=0;i<num;i++)
{
scanf("%d",&arry[i]);
}
}
int Compactlntegers (int *num,int arry[])
{
int i;
int j;
for(i=0;i<*num;i++)
{
if(arry[i] == 0)
{
for(j=i;j<*num;j++)
{
arry[j]=arry[j+1];
}
(*num)--;//数组元素也要跟着减
j--;//不满足条件后,j仍会加一,所以在退出时要减一
}
}
}
int display_arry(int num,int arry[])
{
int i;
for(i=0;i<num;i++)
{
printf("%d",arry[i]);
}
printf("\n");
}
运行结果: