将数组中的零元素后移,将持续更新吉大考研真题.都是我自己运行过的.大家可以学习一下,有事可以联系我,一起学习一起努力.
我已经考上了,这是考时准备的资料.而且最近比较忙,会更,但是有事还是请留言呢!
#include <iostream>
#include <math.h>
using namespace std;
void fun(int a[], int n) //把0后移
{
int i, j, p;
for (i = 0; i < n; i++)
{
if (a[i] == 0) //访问到0元素
{
for (j = i + 1; j < n; j++) //从i+1开始检索后面是否有非零元素
{
if (a[j] != 0) //若找到非零元素,标记下标j
{
p = j;
break; //跳出for循环,执行交换操作
}
if (j == n - 1) //若j=n-1,则遍历完了,没有非0元素了
return;
}
a[i] = a[p]; //直接交换
a[p] = 0; //原来的非0元素,直接置0
}
}
}
int main()
{
int a[6] = {7, 3, 0, 0, 0, 5}; //6个数
fun(a, 6);
int i = 0;
while (i < 6)
cout << a[i++] << endl;
return 0;
}