c语言中运用指针将n个整数向后移m个位置,最后m个数变成最前面m个数,并输出
时间: 2024-12-25 19:25:55 浏览: 12
在 C 语言中,要实现这个功能,我们可以使用指针来操作内存。假设我们有 n 个整数存储在一个数组中,你需要将这 n 个数向后移动 m 位,使得原本的最后 m 个数变为数组的前 m 个数。这里是一个简单的实现方法:
```c
#include <stdio.h>
void rotate(int arr[], int n, int m) {
// 首先计算实际旋转的次数,因为 m 可能大于 n
m = m % n; // 如果 m 大于 n,就只对数组做完整的循环
// 从数组末尾开始,将 m 个数复制到开始位置
for (int i = 0; i < m; i++, n--) {
arr[n] = arr[i];
}
// 更新数组的头 m 个位置
for (int i = n; i < n + m; i++) {
arr[i - n] = arr[i];
}
}
// 测试函数
int main() {
int nums[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(nums) / sizeof(nums[0]);
int m = 3;
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
printf("\n");
rotate(nums, n, m);
printf("Array rotated by %d positions: ", m);
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
在这个程序里,`rotate` 函数接受一个整数数组、数组长度 n 和旋转步长 m。首先计算实际旋转次数,然后用两层循环:第一层将数组末尾的 m 个数复制到前面;第二层更新剩余的位置。`main` 函数中展示了如何调用该函数以及原始数组和处理后的数组。
阅读全文