2、有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 c语言
时间: 2024-10-10 19:05:59 浏览: 23
在 C 语言中,你可以通过数组操作和临时数组的方式来解决这个问题。假设有一个包含 n 个整数的数组 `arr`,你想将前 m 个元素移动到数组的末尾,使得原来的第 i 个元素变成了新的 (i-m+1) 索引处的元素。下面是一个简单的示例代码:
```c
#include <stdio.h>
void move_elements(int arr[], int n, int m) {
// 如果 m 大于 n,则不需要移动,直接返回
if (m > n) return;
// 创建一个临时数组 temp,用于存储原数组的后半部分
int temp[n - m];
// 复制原数组的后 m 个元素到临时数组
for (int i = 0; i < m; ++i)
temp[i] = arr[n - m + i];
// 将原数组剩余部分向前移动
for (int i = m, j = 0; i < n; ++i, ++j)
arr[j] = arr[i];
// 将临时数组的元素插入到原数组的开头
for (int i = 0; i < m; ++i)
arr[n - m + i] = temp[i];
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 3;
move_elements(arr, n, m);
// 打印移动后的数组
for (int i = 0; i < n; ++i)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
```
当你运行这个程序时,它会打印出前 m 个元素移到了数组的末尾,保持原有的顺序。例如,如果输入是 {1, 2, 3, 4, 5} 和 m=3,结果将是 {4, 5, 1, 2, 3}。
阅读全文