c/c++编写程序,假定共有n个整数,储存在一组数组中,则要使前面各数顺序向后移m个位置,并使最后m个数变为最前面的m个数
时间: 2024-05-07 11:18:52 浏览: 57
以下是一种可能的实现方法:
```c
#include <stdio.h>
void rotate_array(int arr[], int n, int m) {
// 将前面的m个数移到最后
for (int i = 0; i < m; i++) {
int temp = arr[i];
for (int j = i; j < n - m + i; j += m) {
arr[j] = arr[j + m];
}
arr[n - m + i] = temp;
}
// 将后面的m个数移到最前
for (int i = 0; i < m; i++) {
int temp = arr[n - m + i];
for (int j = n - m + i; j > i; j -= m) {
arr[j] = arr[j - m];
}
arr[i] = temp;
}
}
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_array(arr, n, m);
printf("移动后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
该程序中的 `rotate_array` 函数接受一个整数数组 `arr`、数组长度 `n` 和移动长度 `m`,并实现将前面的 `m` 个数移到最后,再将后面的 `m` 个数移到最前的功能。程序将输入的数组打印输出,以检查结果是否正确。
阅读全文