c++ ,有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最 前面m个数。写一西数实现以上功能,在主函数中输入n个整数和输出调 整后的n个数。用指针做函数的参数。
时间: 2024-02-05 10:10:36 浏览: 19
以下是实现该功能的C++代码:
```c++
#include <iostream>
using namespace std;
void shift(int *arr, int n, int m);
int main() {
int n, m;
cout << "请输入数组元素个数n和移动的位置m:" << endl;
cin >> n >> m;
int *arr = new int[n];
cout << "请输入" << n << "个整数:" << endl;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
shift(arr, n, m);
cout << "移动后的数组为:" << endl;
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr;
return 0;
}
void shift(int *arr, int n, int m) {
int *temp = new int[m];
for (int i = 0; i < m; i++) {
temp[i] = arr[i];
}
for (int i = 0; i < n - m; i++) {
arr[i] = arr[i + m];
}
for (int i = n - m; i < n; i++) {
arr[i] = temp[i - (n - m)];
}
delete[] temp;
}
```
该程序中首先读入数组元素个数n和移动的位置m,并动态分配一个大小为n的整型数组。然后读入n个整数,调用shift函数进行移位操作,最后输出移动后的数组。shift函数中首先动态分配一个大小为m的整型数组temp,将原数组的前m个元素复制到temp中。然后将原数组中第m+1个元素到第n个元素向前移动m个位置,最后将temp中的m个元素复制到原数组的最后m个位置上。最后别忘了在程序结束前释放动态分配的内存。