通过函数和指针完成以下练习:有n个数,使其前面个数顺序向后移m个位置,最后m个数变成前面m个数
时间: 2024-01-26 13:03:00 浏览: 78
下面是通过函数和指针来实现此练习的示例代码:
```c
#include <stdio.h>
void rotate(int *arr, int n, int m) {
int tmp[m];
// 将后面m个数存入临时数组
for (int i = n - m; i < n; i++) {
tmp[i - (n - m)] = arr[i];
}
// 将前面n-m个数顺序向后移m个位置
for (int i = n - m - 1; i >= 0; i--) {
arr[i + m] = arr[i];
}
// 将临时数组中的m个数移动到前面
for (int i = 0; i < m; i++) {
arr[i] = tmp[i];
}
}
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]);
}
rotate(arr, n, m);
printf("移动后的数组为: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
我们定义了一个`rotate`函数来进行数组的旋转操作,该函数接受三个参数:指向数组首元素的指针`arr`、数组元素个数`n`和向后移动的位置`m`。在函数内部,我们首先创建一个临时数组`tmp`,将后面m个数存入其中。接下来,我们将前面n-m个数顺序向后移m个位置,再将临时数组中的m个数移动到前面。最后,在主函数中调用`rotate`函数,输出移动后的数组元素即可。
阅读全文