用指针的方法有n个整数,使前面各数顺序向后移 m 个位置,最后m个数变成最前面m 个数,写一个函数实现以上功能,在主函数中输人n个整数,并输出调整后的n个数。
时间: 2023-12-20 11:08:15 浏览: 118
以下是一个实现该功能的函数:
```c++
void move(int *arr, int n, int m) {
int *tmp = new int[m];
for (int i = 0; i < m; i++) {
tmp[i] = arr[n - m + i];
}
for (int i = n - m - 1; i >= 0; i--) {
arr[i + m] = arr[i];
}
for (int i = 0; i < m; i++) {
arr[i] = tmp[i];
}
delete[] tmp;
}
```
函数的参数为一个指向整型数组的指针 `arr`,数组的长度 `n`,和移动的距离 `m`。首先创建一个大小为 `m` 的临时数组 `tmp`,用来存储需要移动的最后面的 `m` 个数。然后将数组中前面的数往后移动 `m` 个位置,最后将临时数组中的数放到数组的最前面。最后别忘了释放临时数组的内存。
在主函数中,可以这样调用该函数:
```c++
int main() {
int n, m;
cout << "Enter the length of the array: ";
cin >> n;
int *arr = new int[n];
cout << "Enter " << n << " integers: ";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
cout << "Enter the distance to move: ";
cin >> m;
move(arr, n, m);
cout << "The new array is: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr;
return 0;
}
```
阅读全文