c语言

c语言怎么实现循环右移

小亿
278
2024-03-18 09:25:49
栏目: 编程语言

要实现循环右移,可以利用位运算和取余来完成。下面是一个示例代码:

#include <stdio.h>

void rightRotate(int *arr, int n, int k) {
    k = k % n;
    
    for(int i = 0; i < k; i++) {
        int temp = arr[n-1];
        
        for(int j = n-1; j > 0; j--) {
            arr[j] = arr[j-1];
        }
        
        arr[0] = temp;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
    
    rightRotate(arr, n, k);
    
    for(int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

在这个示例中,我们定义了一个rightRotate函数,它接受一个整型数组arr、数组长度n和右移位数k作为参数。首先对k取余确保kn的范围内,然后循环执行右移操作。在右移过程中,我们先保存最后一个元素的值,然后依次将前面的元素向后移动一位,最后将保存的值放到第一个位置。最后在main函数中调用rightRotate函数并打印结果。

0
看了该问题的人还看了