#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。知道这个程序的逻辑有什么问题吗?谢谢你的时间!
答案 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
,因此会不断更改最初提供的数组,从而访问更改的值。
为了能够反转数组,在完成反转过程结束之前,不得丢失最初提供的值。