流萤k423 2023-12-29 22:01 采纳率: 81.4%
浏览 8
已结题

C++移动一维数组中的负整数

设计一个程序,将存放在一维整型数组中的负整数都移至数组的开始位置。例如:若原数组中的数据存放顺序为:2 -3 4 -2 5 7,则移动后数组中的数据存放顺序为:-2 -3 2 4 5 7 或 -3 -2 2 4 5 7。
要求:利用指针来操作一维数组元素,包括:通过指针来寻找负整数,以及通过指针来移动数组元素的位置。

提示:当找到一个负整数时,可以先将从开始位置至该负整数之前的元素整体向右移动一个位置,然后将该负整数直接放在数组的开始位置。

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-12-29 22:07
    关注
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月6日
  • 已采纳回答 12月29日
  • 创建了问题 12月29日