要实现循环右移,可以利用位运算和取余来完成。下面是一个示例代码:
#includevoid 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
取余确保k
在n
的范围内,然后循环执行右移操作。在右移过程中,我们先保存最后一个元素的值,然后依次将前面的元素向后移动一位,最后将保存的值放到第一个位置。最后在main
函数中调用rightRotate
函数并打印结果。