将长度为n的数组R中的数据循环左移p个位置C语言
时间: 2024-09-29 08:07:02 浏览: 47
C语言数组元素的循环移位方法
5星 · 资源好评率100%
在C语言中,如果你想要将一个长度为n的数组R循环左移p个位置,你可以使用数组的索引来实现这个操作。这里是一个简单的示例:
```c
#include <stdio.h>
void circular_left_shift(int arr[], int n, int p) {
// 如果移动位数大于数组长度,取模操作使得位移有效
p = p % n;
// 使用临时变量保存第一个元素
int temp = arr[0];
// 从第二个元素开始,依次将每个元素移到原位置左边
for (int i = 0; i < n - 1; i++) {
arr[(i + p) % n] = arr[i]; // 新位置 = 原位置 + p 取模 n
}
// 最后把第一个元素放回新位置
arr[n - 1] = temp;
}
// 测试函数
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int p = 2;
printf("Original array:\t");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
circular_left_shift(arr, n, p);
printf("\nShifted by %d positions:\t", p);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个例子中,`circular_left_shift`函数接收一个数组、数组的长度以及需要左移的位置,然后通过循环将数组元素向左移动p个位置。
阅读全文