用C++完成:有n个整数使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数
时间: 2024-12-22 13:19:09 浏览: 9
基于C++控制台应用程序的顺序表操作
为了在C++中实现这个功能,你可以创建一个名为`rotateArray`的函数,它接受两个整数参数`arr`(数组),`n`(数组长度)和`m`(旋转次数)。首先,我们需要对数组进行边界检查,然后根据旋转次数对数组进行移动。以下是一个简单的实现:
```cpp
#include <iostream>
using namespace std;
void rotateArray(int arr[], int n, int m) {
// 检查数组长度和旋转次数的有效性
if (n <= 0 || m <= 0 || m > n) {
cout << "Invalid input! Please ensure n > 0 and 0 <= m <= n." << endl;
return;
}
// 如果旋转次数大于数组一半,相当于从后向前转
if (m > n / 2) {
m = n - m; // 转换为从前往后转
}
// 使用双指针法,一个指向开始,一个指向结束,每次移动元素到新位置
for (int i = 0; i < m; ++i) {
// 将第i+1个元素移到第一个元素的位置
swap(arr[0], arr[i + 1]);
// 移动其余元素
for (int j = 0; j < n - 1 - i; ++j) {
swap(arr[j], arr[j + 1]);
}
}
}
// 主函数示例
int main() {
int n;
cout << "Enter the number of integers: ";
cin >> n;
int arr[n];
cout << "Enter " << n << " integers: ";
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
int m;
cout << "Enter the rotation count: ";
cin >> m;
rotateArray(arr, n, m);
cout << "Rotated array: ";
for (int i : arr) {
cout << i << " ";
}
阅读全文