c - 是什么让阵列在没有温度的情况下向左旋转?

标签 c arrays rotation

因此,我正在编写一个程序,如果正数 则将数组移至右侧,如果负数 则将数组移至左侧。我只是创建了两个不同的函数,如果值为 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-1jj .向左旋转时,以 kk=0 开始内循环并交换元素 kkkk+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/

相关文章:

image - 在 html5 Canvas 上旋转单个图像(而不是其他图像)?

c# - 获得正确的图像旋转

c - SIGABRT 在 fclose 上吗?

java - 无法使用 char 数组分割创建的字符串\n

javascript - 如何将这个对象转换为数组?

c - 使用C返回数组

iphone - 使用 loadView 创建 View 时, View 的框架大小在旋转时不会改变

c - C 中的 pthread_create 参数

c - Yoda 条件和整数提升

c - ( float )类型转换不起作用