要實現循環右移,可以利用位運算和取余來完成。下面是一個示例代碼:
#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
取余確保k
在n
的范圍內,然后循環執行右移操作。在右移過程中,我們先保存最后一個元素的值,然后依次將前面的元素向后移動一位,最后將保存的值放到第一個位置。最后在main
函數中調用rightRotate
函數并打印結果。