好吧所以我试图打印和数组,然后反向使用另一个数组但我正在尝试创建一个For循环,它将采取一个数组并反转所有元素到位,而不必我经历创建过程一个全新的阵列.
我的for循环遇到了一些问题,我不知道从哪里开始......我正在使用i将元素移到最后并将其移到前面然后j被用作计数器跟踪元素...如果有更简单的方法这样做任何建议将不胜感激.
我是这种编程语言的新手,所以非常感谢任何额外的信息.
#include <stdlib.h>
#include <time.h>
int Random(int Max) {
return ( rand() % Max)+ 1;
}
void main() {
const int len = 8;
int a[len];
int i;
int j = 0;
Randomize() ;
srand(time(0));
//Fill the Array
for (i = 0; i < len; ++i) {
a[i] = rand() % 100;
}
//Print the array after filled
for (i = 0; i < len; ++i) {
printf("%d ", a[i]);
}
printf("\n");
getchar();
//Reversing the array in place.
for (i = a[len] -1; i >= 0, --i;) {
a[i] = a[j];
printf("%d ", a[j]);
j++;
}
}
Run Code Online (Sandbox Code Playgroud)
while循环可能更容易概念化。可以认为它是从两端开始并交换两个元素,直到达到中间为止。
i = len - 1;
j = 0;
while(i > j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i--;
j++;
}
//Output contents of now-reversed array.
for(i = 0; i < len; i++)
printf("%d ", a[i])
Run Code Online (Sandbox Code Playgroud)
void reverse_range(int* buffer, int left, int right)
{
while (left < right)
{
int temp = buffer[left];
buffer[left++] = buffer[right];
buffer[right--] = temp;
}
}
Run Code Online (Sandbox Code Playgroud)
叫它反向数组
int a[3] = {1, 2, 3};
reverse_range(a, 0, 2);
Run Code Online (Sandbox Code Playgroud)