蓝桥杯算法训练—删除数组零元素
这题就是编写一个实现删除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;
}