【发布时间】:2020-09-22 22:29:05
【问题描述】:
我无法理解为什么我的 reverseArray 函数不能正确交换索引处的值。
我想要的是最后一个值一直与第一个值交换,直到 i 弃用为 0。我相信 [(SIZE - i) - 1] 有问题但我似乎无法理解为什么。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MIN 0
#define MAX 100
#define SIZE 40
void fillArray(int arr[]);
int findWithRange(int arr[], int low, int high);
int findMaxInArray(int arr[], size_t arr_size);
void printArray(int arr[], size_t arr_size);
void reverseArray(int arr[]);
int main(void){
srand((unsigned)time(NULL));
int arr[SIZE], low, high;
fillArray(arr);
printArray(arr, SIZE);
puts("\n");
puts("\n");
reverseArray(arr);
printArray(arr, SIZE);
puts("\n");
}
void fillArray(int arr[]){
for (int i = 0; i < SIZE; i++){
arr[i] = rand() % (MAX + 1) + MIN;
}
}
void reverseArray(int arr[]){
int temp;
for (int i = SIZE - 1; i > 0; i--){
temp = arr[i];
arr[i] = arr[(SIZE - i) - 1];
arr[(SIZE - i) - 1] = temp;
}
}
【问题讨论】:
-
您不应该交换数组的所有元素,而应该只交换其中的一半。否则,您会将它们放回原来的位置(首先将最后一个与第一个交换,然后将“第一个”与“最后一个”交换回)。