c - 在 C 中交换数组的元素

标签 c arrays rotation swap

所以我想将 32 个整数的数组元素切换“n”次。

所有元素都应位于下一个位置,最后一个元素应位于第一个位置。

我尝试过这样的事情:

while(scanf("%d", &n) != EOF)
{
    for(int j=0; j<n; j++)
    for(int i=1; i<31; i++)
    {
        t[0]=t[31];
        tmp=t[i];
        t[i]=t[i+1];
    }
}

我不确定如何使用 tmp 变量来解决这个问题。

这是数组的元素:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

如果 n=1,它应该看起来像这样:

32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

最佳答案

以下不是对代码的编辑,而是运行时间为 O(n) 的更有效的解决方案:

void rightshift(char array[LENGTH])
{
    int i, next = array[0];

    for (i = 1; i < LENGTH; i++)
    {
        char temp = array[i];
        array[i] = next;
        next = temp;
    }

    array[0] = next;
}

关于c - 在 C 中交换数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55300301/

相关文章:

无法弄清楚 C 语言中 scanf ("%[^\n]\n", input) 会发生什么

java - 格式化数组,其中数据从表数据库中获取

jquery - 拖动并旋转容器内的图像

objective-c - 关于在 iOS 中旋转 map

iphone - 在 cocoa touch 中实现基于触摸的旋转

c - 用于 nasm/yasm 和 C 的 Polygot 包含文件

c - 使用 fread() 和 fseek()

c - 在 float 的右侧添加零

arrays - 如何随机选择一个变量并找到其属性

javascript - 将数组填充到表单字段中(AngularJS)