编写一个程序,有 n 个整数,要求你编写一个函数使其向右循环移动 m 个位置 输入:输入 n m 表示有 n 个整数,移动 m 位 输出:输出移动后的数组 例如: 输入: 10 5 1 2 3 4 5 6 7 8 9 0 输出: 6 7 8 9 0 1 2 3 4 5
时间: 2024-01-01 07:04:22 浏览: 155
以下是实现该程序的C语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
void rightShift(int arr[], int n, int m) {
int temp[MAX_SIZE];
for (int i = 0; i < n; i++) {
temp[(i + m) % n] = arr[i];
}
for (int i = 0; i < n; i++) {
arr[i] = temp[i];
}
}
int main() {
int n, m, arr[MAX_SIZE];
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
rightShift(arr, n, m);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在上述代码中,我们定义了一个函数`rightShift`,它接收三个参数,分别是整数数组`arr`、数组的大小`n`和向右循环移动的位置`m`。在函数中,我们首先定义了一个临时数组`temp`,并使用循环将原数组中的元素移动到临时数组中。移动的位置是`(i + m) % n`,其中i表示当前循环的下标,m表示移动的位数,n表示数组的大小。接着,我们再次使用循环将临时数组中的元素移动到原数组中。最后,我们在主函数中读入输入的数据,调用`rightShift`函数,并输出移动后的数组。
注意,在上述代码中我们使用了一个宏定义`MAX_SIZE`,它表示定义数组的最大大小。如果输入的数组大小超过了该值,程序可能会出现错误。
阅读全文