用c语言写一个程序,有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,写一函数实现以上功能,在主函数中输入n个整数,输出调整后的n个整数,用指针变量完成
时间: 2023-12-20 20:57:08 浏览: 77
下面是用指针实现的C语言程序:
```c
#include <stdio.h>
void move(int *arr, int n, int m);
int main() {
int n, m, i;
printf("输入 n 和 m:");
scanf("%d %d", &n, &m);
int arr[n];
printf("输入 %d 个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
move(arr, n, m);
printf("移动后的数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
void move(int *arr, int n, int m) {
int temp[m], i;
for (i = 0; i < m; i++) {
temp[i] = *(arr + i + n - m);
}
for (i = n - m - 1; i >= 0; i--) {
*(arr + i + m) = *(arr + i);
}
for (i = 0; i < m; i++) {
*(arr + i) = temp[i];
}
}
```
程序中的 `move` 函数实现了题目要求的功能,接受一个整型数组的指针 `arr`,数组长度 `n`,移动的位置 `m`,并将数组移动 `m` 个位置。为了移动后最后 `m` 个数变成最前面的 `m` 个数,需要用一个长度为 `m` 的临时数组 `temp` 来保存数组后面的 `m` 个数,然后将前面的 `n-m` 个数向后移动 `m` 个位置,最后将 `temp` 数组中的 `m` 个数放到数组前面即可。
阅读全文