c++ - 如何在不修改现有函数的情况下反转除数组的第一个和最后一个元素之外的所有元素?
问题描述
为了清楚起见,我不允许为此使用任何 std 函数。我编写了一个函数来反转双精度数组的所有内容。如何在不修改函数的情况下使函数反转除第一个和最后一个元素之外的所有元素?
void reverse_array(double *arr, int size)
{
double temp;
for(int j = 0; j < size - 1; j++){
for(int i = 0; i < ((size - 1) - j); i++){
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
使用函数调用
reverse_array(array + 1, size - 1)
我可以反转除第一个元素之外的所有元素。我原以为调用会反转除第一个和最后一个元素之外的所有元素,因为指针向下移动了一个元素,并且大小决定了值交换的频率。
解决方案
如果 size 是数组大小,那么您可以尝试 size - 2 而不是 - 1 吗?