用C语言指针调用,有n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数
时间: 2024-01-29 20:04:28 浏览: 53
cpp代码-(数组)将两个升序数组合并为一个升序数组
好的,这是一道比较常见的C语言面试题,下面是一种实现方式:
```c
void move(int *arr, int n, int m) {
int temp[m];
// 保存最后 m 个数
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];
}
// 把最后 m 个数放到最前面
for(int i = 0; i < m; i++) {
arr[i] = temp[i];
}
}
```
其中,`arr` 是一个指向数组首元素的指针,`n` 是数组的长度,`m` 是要移动的位置数。这个函数的实现思路是先把最后 m 个数保存到一个临时数组中,然后把前面的 n - m 个数向后移动 m 个位置,最后把临时数组中的数放到最前面。
阅读全文