反转数组中的内容
我有一个数字数组,我正试图将其反转。我相信代码中的函数是正确的,但我无法获得正确的输出。
输出如下10 9 8 7 6. 为什么我不能得到另一半数字?当我从计数中去掉 "/2" 时,输出结果如下:10 9 8 7 6 6 7 8 9 10
void reverse(int [], int);
int main ()
{
const int SIZE = 10;
int arr [SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
reverse(arr, SIZE);
return 0;
}
void reverse(int arr[], int count)
{
int temp;
for (int i = 0; i < count/2; ++i)
{
arr[i] = temp;
temp = arr[count-i-1];
arr[count-i-1] = arr[i];
arr[i] = temp;
cout << temp << " ";
}
}
12
3
线路
是错误的。 (在循环的第一次迭代中,它将
arr[i]
设置为一个未定义的值;以后的迭代将它设置为一个不正确的值)。如果删除这一行,数组应该可以正确反转。之后,你应该将打印反转数组的代码移到一个新的循环中,该循环将遍历整个列表。 目前的代码只打印前
count/2
个元素。这两个答案在我看来都是正确的。
第一个
arr[i] = temp;
应该删除应该执行第二个循环来打印***所有元素,而不是只打印数组的一半。做反向操作的循环不需要打印。
您不是在打印数组,而是在打印
temp
的值 - 这只是数组的一半...