蓝桥杯算法训练—删除数组零元素

蓝桥杯算法训练—删除数组零元素
  这题就是编写一个实现删除0功能的函数,并明确函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。(这里删除0我并没有真正把0从数组中去掉,而是把不等于0的数一个一个往前赋值,最后返回非零元素的个数,输出就行)。注意传参数时,数组应传址而非传值,不然在函数中修改了数组中的内容,主函数却不变。
 代码如下:

#include<iostream>
using namespace std;
int CompactIntegers(int *a,int b);
int main(){
	int n,a[100];
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	int sum=CompactIntegers(a,n);
	cout<<sum<<endl;
	for(int j=0;j<sum;j++){
		cout<<a[j]<<" ";
	}
	return 0;
}
int CompactIntegers(int *a,int b){
	int sum=0;
	for(int i=0;i<b;i++){
		if(a[i]!=0){
			a[sum]=a[i];
			sum++;
		}
	}
	return sum;
}