请检查我的反转数组代码,找不到错误。 它在函数调用前后显示相同的数组,我不知道为什么?
#include <iostream>
using namespace std;
void reverseArray(int *arr, int size)
{
int *Copy_arr = new int[size];
int temp;
for (int i = 0; i < size; i++)
{
Copy_arr[i] = arr[i];
}
for (int i = 0; i < size; i++)
{
temp = arr[i];
arr[i] = arr[(size - 1) - i];
arr[(size - 1) - i] = temp;
}
cout << "Array before function call was: ";
for (int i = 0; i < size; i++)
{
cout << Copy_arr[i] << " ";
}
cout << endl << "Array after function call is: ";
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void main()
{
int size;
cout << "Enter size of array\n";
cin >> size;
int *p = new int[size];
cout << "Enter the elements of array\n";
for (int i = 0; i < size; i++)
{
cin >> p[i];
}
reverseArray(p, size);
}
答案 0 :(得分:-2)
问题在于您没有使用缓冲区来进行反向操作,因此,现在的方式是,反向循环的一半完成了您想要的操作,另一半则将所有操作都恢复了。以某种方式反转了反转的数组。
@ Jarod42和@kiran Biradar指出,有更好的方法可以使用标准库中的函数来执行此操作,但我想您想在没有库的情况下执行此操作。
这是一个简单的解决方法,将Arr替换为Copy_arr
for (int i = 0; i < size; i++)
{
temp = Copy_arr[i];
arr[i] = Copy_arr[(size - 1) - i];
arr[(size - 1) - i] = temp;
}