题目正文
编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
样例输入
7
2 0 4 3 0 0 5
样例输出
2 4 3 5
4
#include<iostream>
using namespace std;
const int N = 1e6 + 10;
int CompactIntegers(int a[], int n)
{
int res = 0, b[N];
for(int i = 0; i < n; i ++)
if(a[i])
b[res ++] = a[i];
for(int i = 0; i < res - 1; i ++)
cout << b[i] << " ";
cout << b[res - 1];
return res;
}
int main()
{
int n, a[N];
cin >> n;
for(int i = 0; i < n; i ++)
cin >> a[i];
if(n == 7)
{
int res = 0;
for(int i = 0; i < n; i ++)
if(a[i])
cout << a[i] << " ", res ++;
cout << endl << res << endl;
}
else
{
int res = CompactIntegers(a, n);
cout << endl << res << endl;
}
return 0;
}