用C语文指针调用,有n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数
时间: 2024-01-29 16:04:28 浏览: 36
可以使用循环移位的方法来实现这个功能。具体步骤如下:
1. 定义一个长度为n的数组,并输入n个数。
2. 定义一个变量m,表示要向后移动的位置数。
3. 将前面m个数依次存储到一个临时数组中。
4. 将数组中剩余的n-m个数向后移动m个位置。
5. 将临时数组中的m个数存储到数组的前面m个位置。
以下是示例代码:
```c
#include <stdio.h>
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]);
}
int temp[m];
for (int i = 0; i < m; i++) {
temp[i] = arr[i];
}
for (int i = m; i < n; i++) {
arr[i - m] = arr[i];
}
for (int i = 0; i < m; i++) {
arr[n - m + i] = temp[i];
}
printf("移动后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
注意,这里的移位操作是“循环移位”,即将数组的最后m个数移到前面m个位置。如果需要“非循环移位”,即将数组的最后m个数移到前面,可以将第4步修改为:
```c
for (int i = n - 1; i >= m; i--) {
arr[i - m] = arr[i];
}
```
这样就可以实现非循环移位了。
阅读全文