编写一个程序,有 n 个整数,要求你编写一个函数使其向右循环移动 m 个位置 输入:输入 n m 表示有 n 个整数,移动 m 位 输出:输出移动后的数组
时间: 2024-02-25 21:56:17 浏览: 24
好的,以下是C语言编写的程序:
```
#include <stdio.h>
void rightShift(int arr[], int n, int m);
int main() {
int n, m, i;
int arr[100];
printf("请输入整数n和m:");
scanf("%d%d", &n, &m);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
rightShift(arr, n, m);
printf("移动后的数组为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void rightShift(int arr[], int n, int m) {
int i, j, temp;
// 先将整个数组反转
for (i = 0, j = n - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 再将前m个元素反转
for (i = 0, j = m - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 最后将后n-m个元素反转
for (i = m, j = n - 1; i < j; i++, j--) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
程序的运行流程如下:
1. 首先,程序要求用户输入整数n和m,以及n个整数的数组。
2. 然后,程序调用rightShift函数对数组进行向右循环移动m个位置的操作。具体操作是:先将整个数组反转,再将前m个元素反转,最后将后n-m个元素反转。
3. 最后,程序输出移动后的数组。
希望可以帮助到你!