有个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数,用指针完成
时间: 2024-03-10 22:47:54 浏览: 70
好的,以下是实现代码,你可以参考一下:
```c
#include <stdio.h>
#include <stdlib.h>
void move(int *arr, int n, int m) {
int *temp = (int *)malloc(m * sizeof(int));
for (int i = 0; i < m; i++) {
temp[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] = temp[i];
}
free(temp);
}
int main() {
int n, m;
printf("请输入数组长度 n 和移动位置 m:");
scanf("%d%d", &n, &m);
int *arr = (int *)malloc(n * sizeof(int));
printf("请输入 %d 个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
move(arr, n, m);
printf("移动后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
函数 `move` 的作用是将数组 `arr` 中的前面 `n - m` 个数向后移动 `m` 个位置,最后 `m` 个数变成最前面 `m` 个数。函数中使用了动态内存分配来存储临时数组 `temp`,然后依次进行三次循环操作,将前面 `n - m` 个数向后移动 `m` 个位置,最后 `m` 个数变成最前面 `m` 个数。在主函数中,先输入数组长度 `n` 和移动位置 `m`,然后输入 `n` 个整数,调用 `move` 函数进行移动操作,最后输出调整后的数组。
阅读全文