因此,我正在编写一个程序,如果正数 则将数组移至右侧,如果负数 则将数组移至左侧。我只是创建了两个不同的函数,如果值为 X,则向右旋转 X,如果值为 ,则向左旋转 X>-X。因此,如果值为 -4,我可以将左函数应用于 4。基本上 rotate_r 使我的数组向右旋转。我希望我的 rotate_l 向左移动我的数组。我不知道如何扭转 rotate_r 的影响以使 rotate_l 走相反的路。这是我的代码。 TLDR;基本上我想用 oo,kk 将数组向左而不是向右移动
#include<stdio.h>
void rotate_r(int *array, int size, int r)
{
int ii, jj;
for (ii = 1; ii <= r; ii++)
{
for (jj = size-1; jj > 0; jj--)
{
/* swapping the array[jj] and array[jj-1] elements without
using temporary variable */
array[jj-1] = array[jj-1] + array[jj];
array[jj] = array[jj-1] - array[jj];
array[jj-1] = array[jj-1] - array[jj];
}
}
return;
}
void rotate_l(int *array, int size, int l)
{
int oo, kk;
for (oo = 1; oo <= l; oo++)
{
for (kk = size-1; kk > 0; kk--)
{
/* swapping the array[jj] and array[jj-1] elements without
using temporary variable */
array[kk-1] = array[kk-1] + array[kk];
array[kk] = array[kk-1] - array[kk];
array[kk-1] = array[kk-1] - array[kk];
}
}
return;
}
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10}, oo;
rotate_l(a, 10, 4);
printf("After rotating a by 4\n");
for (oo = 0; oo < 10; oo++)
{
printf("%5d", a[oo]);
}
printf("\n");
return 0;
}
最佳答案
向右旋转时,您以 jj=size-1
开始内部循环并交换元素 jj-1
和 jj
.向左旋转时,以 kk=0
开始内循环并交换元素 kk
和 kk+1
。
void rotate_l(int *array, int size, int l)
{
int oo, kk;
for (oo = 1; oo <= l; oo++)
{
for (kk = 0; kk < size-1; ++kk)
{
/* swapping the array[kk] and array[kk+1] elements without
using temporary variable */
array[kk] = array[kk+1] + array[kk];
array[kk+1] = array[kk] - array[kk+1];
array[kk] = array[kk] - array[kk+1];
}
}
return;
}
关于c - 是什么让阵列在没有温度的情况下向左旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840771/