设计一个程序,将存放在一维整型数组中的负整数都移至数组的开始位置。例如:若原数组中的数据存放顺序为:2 -3 4 -2 5 7,则移动后数组中的数据存放顺序为:-2 -3 2 4 5 7 或 -3 -2 2 4 5 7。
要求:利用指针来操作一维数组元素,包括:通过指针来寻找负整数,以及通过指针来移动数组元素的位置。
提示:当找到一个负整数时,可以先将从开始位置至该负整数之前的元素整体向右移动一个位置,然后将该负整数直接放在数组的开始位置。
设计一个程序,将存放在一维整型数组中的负整数都移至数组的开始位置。例如:若原数组中的数据存放顺序为:2 -3 4 -2 5 7,则移动后数组中的数据存放顺序为:-2 -3 2 4 5 7 或 -3 -2 2 4 5 7。
要求:利用指针来操作一维数组元素,包括:通过指针来寻找负整数,以及通过指针来移动数组元素的位置。
提示:当找到一个负整数时,可以先将从开始位置至该负整数之前的元素整体向右移动一个位置,然后将该负整数直接放在数组的开始位置。
#include <iostream>
using namespace std;
int main()
{
int a[] = {2, -3, 4, -2, 5, 7};
int n = sizeof(a) / sizeof(int);
int *p = a;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (*(p + j) >= 0 && *(p + j + 1) < 0)
{
int t = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = t;
}
}
}
for (int i = 0; i < n; i++)
cout << a[i] << " ";
return 0;
}