】PTA 数组循环右移(C)
时间: 2025-01-02 12:16:22 浏览: 24
在C语言中,PTA(Pointers to Arrays)数组循环右移通常指的是通过指针操作将整个数组向右移动一定位数的操作。这种方法可以避免直接修改数组元素位置带来的效率问题,特别是当数组很大时。
下面是一个简单的示例,展示了如何使用指针和数组长度来进行数组循环右移:
```c
#include <stdio.h>
// 定义函数进行数组循环右移
void rightShift(int* arr, int length, int shift) {
// 获取移动步长的有效范围(0 <= shift < length)
shift = shift % length;
// 使用两个指针,一个指向原数组的起始,另一个指向新位置
int* start = arr;
int* end = arr + length - 1;
// 将元素从旧位置移到新位置
while (shift--) {
*end = *(start + length - 1); // 右移一位
start++; // 移动开始指针
end--; // 移动结束指针
}
}
int main() {
int array[5] = {1, 2, 3, 4, 5};
int shift = 2;
printf("Before shifting:\n");
for (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) {
printf("%d ", array[i]);
}
rightShift(array, sizeof(array) / sizeof(array[0]), shift);
printf("\nAfter shifting by %d positions:\n", shift);
for (int i = 0; i < sizeof(array) / sizeof(array[0]); i++) {
printf("%d ", array[i]);
}
return 0;
}
```
在这个例子中,`rightShift` 函数接收一个数组、数组长度以及需要移动的位置。它首先计算有效移动次数,然后使用指针逐个交换数组中的元素,直到达到指定的移动位数。
阅读全文