【问题标题】:Using a for loop to reverse an array does nothing [duplicate]使用for循环来反转数组什么都不做[重复]
【发布时间】:2019-06-21 17:29:30
【问题描述】:

我正在尝试使用 for 循环来反转 15 个数字的数组,但由于某种原因,数组顺序保持不变。

我的代码如下所示:

int main()
{
    int arr[15] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    int i, j, temp;
    for (i = 0; i < 15; i++)
    {
        temp = arr[15 - i - 1];
        arr[15 - i - 1] = arr[i];
        arr[i] = temp;
    }
    j = 0;
    do {
        std::cout << arr[j] << " ";
        j++;
    } while (j < 15);
}

知道我做错了什么吗?

【问题讨论】:

  • 问问自己,如果每次迭代交换 2 个元素,你需要多少次迭代 number_of_swaps == number_of_elements(或者更哲学地说:你能走进森林多远)
  • 你倒转了两次。
  • 下次贴上sn-p可以编译的代码;即把int main()放在你写的东西周围。更好的是,编辑问题。
  • 我开始认为这应该是一个 c++-faq。
  • 好消息是,既然您了解了算法,您就不必再这样做了。 std::reverse 带有标准库是有原因的。

标签: c++ arrays reverse


【解决方案1】:

是的,一旦i 超过中点,您就可以再次交换所有元素。

要倒车,只需要走一半即可;即运行 i 到 15 / 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 2021-05-02
    • 2017-07-29
    • 2021-04-24
    • 2020-01-31
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多