有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。用c++语言的指针编程写一个函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个整数。
时间: 2024-05-01 07:20:40 浏览: 82
以下是一个示例代码实现:
```c
#include <stdio.h>
void shift_array(int *arr, int n, int m) {
// 申请临时数组,存储需要移动到前面的 m 个数
int *temp = (int*)malloc(m * sizeof(int));
// 将需要移动的数存入临时数组
for (int i = 0; i < m; i++) {
temp[i] = arr[n-m+i];
}
// 将后面的 n-m 个数向后移动 m 个位置
for (int i = n-m-1; i >= 0; i--) {
arr[i+m] = arr[i];
}
// 将临时数组中的数移动到数组前面
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
// 释放临时数组的内存
free(temp);
}
int main() {
int n, m;
printf("请输入 n 和 m:");
scanf("%d%d", &n, &m);
int arr[n];
printf("请输入 %d 个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
shift_array(arr, n, m);
printf("调整后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
该函数通过申请临时数组,将需要移动的 m 个数存入临时数组,然后将后面的 n-m 个数向后移动 m 个位置,最后将临时数组中的数移动到数组前面。注意要在函数结束时释放临时数组的内存。在主函数中读入 n 和 m,以及 n 个整数,然后调用该函数进行数组移位,最后输出调整后的数组。
阅读全文