n个整数,使前面各数顺序向后移m个位置,最后m个数变成最 前面m个数。写一西数实现以上功能,在主函数中输入n个整数和输出调 整后的n个数。用指针做函数的参数。
时间: 2023-08-31 17:05:49 浏览: 75
这里是一个使用指针实现的代码示例:
```c
#include <stdio.h>
void move(int *p, int n, int m);
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]);
}
move(arr, n, m);
printf("移动后的结果为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void move(int *p, int n, int m) {
int temp[m];
for (int i = n - m; i < n; i++) {
temp[i - n + m] = *(p + i);
}
for (int i = n - m - 1; i >= 0; i--) {
*(p + i + m) = *(p + i);
}
for (int i = 0; i < m; i++) {
*(p + i) = temp[i];
}
}
```
这个程序中,`move` 函数使用了三个循环来实现移动数组的功能。第一个循环将数组中最后的 `m` 个数存储到一个临时数组中,第二个循环将数组中前面的 `n-m` 个数向后移动 `m` 个位置,第三个循环将临时数组中的 `m` 个数复制到数组前面的位置上。在主函数中,我们先输入了数组的长度 `n` 和移动的位置 `m`,然后输入了 `n` 个整数,接着调用了 `move` 函数来移动数组,最后输出了调整后的数组。
阅读全文