为什么不通过程序正确地反转数组的值?

时间:2016-09-10 07:51:39

标签: c++

#include <iostream>
using namespace std;
int main ()
{
    int myArray [5] = {10, 20, 30, 40, 50};
    for(int count = 0; count < 5; count++)
    {
        myArray[count] = myArray[4-count];
    }

    for(int Count = 0; Count < 5; Count++)
    {
        cout<<myArray[Count]<<endl;
    }
}

产出为50,40,30,40,50而不是50,40,30,20,10。知道这个程序的逻辑有什么问题吗?谢谢你的时间!

2 个答案:

答案 0 :(得分:2)

让我们一次遍历代码一次:

 myArray [5] = {10, 20, 30, 40, 50};

第一次迭代:

 myArray [5] = {50, 20, 30, 40, 50};

第二次迭代:

 myArray [5] = {50, 40, 30, 40, 50};

第3次迭代:

 myArray [5] = {50, 40, 30, 40, 50};

第4次迭代:

 myArray [5] = {50, 40, 30, 40, 50};

第5次迭代:

 myArray [5] = {50, 40, 30, 40, 50};

使其按预期工作更改循环以交换保留覆盖它们的值。像:

for (i = 0; i < 2; ++i) {
    tmp = arr[4-i];
    myArray[4-i] = myArray[i];
    myArray[i] = tmp;
}

答案 1 :(得分:0)

因为您正在更改数组in-place,因此会不断更改最初提供的数组,从而访问更改的值。

为了能够反转数组,在完成反转过程结束之前,不得丢失最初提供的值。

相关问题