编写一个函数,利用指针把一个int 数组内容循环右移n个。
时间: 2024-12-29 18:32:34 浏览: 23
你可以编写一个简单的 C/C++ 函数来实现这个功能,这里提供一个示例:
```cpp
#include <iostream>
// 循环右移数组元素的函数
void circularShift(int* arr, int n, int size) {
// 将数组分为两部分:头 n 个元素和剩余元素
for (int i = 0; i < size - n; ++i) {
arr[i] = arr[i + n]; // 移动左侧元素到当前位置
}
// 将最后 n 个元素移到数组开始
for (int i = size - n; i < size; ++i) {
arr[size - 1 - n + i] = arr[i];
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = 2; // 需要移动的元素个数
std::cout << "Original array: ";
for (int i : arr) {
std::cout << i << ' ';
}
std::cout << "\n";
circularShift(arr, n, sizeof(arr) / sizeof(arr[0]));
std::cout << "Array after shifting right by " << n << ": ";
for (int i : arr) {
std::cout << i << ' ';
}
std::cout << "\n";
return 0;
}
```
在这个例子中,`circularShift` 函数接受一个整数数组、需要移动的元素个数 `n`,以及数组的大小。它首先将数组头部的元素向右移动,然后将尾部的元素复制到新的位置,实现了循环右移的效果。
当你运行此程序,原始数组会被右移指定的步长 `n` 后的元素。例如,对于 `[1, 2, 3, 4, 5]` 和 `n=2`,输出将是 `[3, 4, 5, 1, 2)`。
阅读全文