有n个整数,使前面各数顺序向后(向左)移m个位置,最后m个数变成前面m个数。要求:用C++实现,使用指针,使用iostream
时间: 2023-08-31 17:05:46 浏览: 72
Java for combinatorial number algorithm.zip_4MJN_M?n_enterbl4_组合
下面是一个实现的示例代码:
```c++
#include <iostream>
using namespace std;
void shift(int* arr, int n, int m) {
int* temp = new int[m];
// 把后面m个数存储到临时数组temp中
for (int i = n - m; i < n; i++) {
temp[i - n + m] = arr[i];
}
// 把前面n-m个数向后移动m个位置
for (int i = n - 1; i >= m; i--) {
arr[i] = arr[i - m];
}
// 把临时数组中的m个数放到数组的前面m个位置
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
delete[] temp; // 释放临时数组的内存空间
}
int main() {
int n = 10, m = 3;
int arr[n] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "原数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
shift(arr, n, m);
cout << "移动后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在这个示例代码中,我们首先使用指针动态分配了一个临时数组temp的内存空间,然后把原数组中后面m个数存储到temp中。接着,我们使用指针遍历原数组,把前面n-m个数向后移动m个位置。最后,我们再次使用指针把临时数组中的m个数放到数组的前面m个位置。最后,记得释放临时数组的内存空间。
阅读全文