有n个整数,用c语言编一个函数使其右循环移动m个位置
时间: 2024-05-08 18:20:57 浏览: 81
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
可以使用数组的循环移动来实现,具体方法如下:
1. 定义一个长度为n的整型数组a,以及一个变量m表示右循环移动的位数。
2. 按照题意,先将数组的后m个元素保存到一个临时数组b中。
3. 将数组a中的前n-m个元素依次向后移动m个位置,即a[i] = a[i-m]。
4. 最后将数组b中的元素依次放到a中前m个位置,即a[i] = b[i]。
下面是实现代码:
```c
void right_rotate(int a[], int n, int m) {
int b[m];
// 保存后m个元素到临时数组b中
for (int i = 0; i < m; i++) {
b[i] = a[n - m + i];
}
// 将前n-m个元素依次向后移动m个位置
for (int i = n - 1; i >= m; i--) {
a[i] = a[i - m];
}
// 将临时数组b中的元素依次放到a中前m个位置
for (int i = 0; i < m; i++) {
a[i] = b[i];
}
}
```
可以将该函数放到自己的代码中进行验证,例如:
```c
int main() {
int a[] = {1, 2, 3, 4, 5};
int n = sizeof(a) / sizeof(int);
int m = 2;
right_rotate(a, n, m);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
输出结果为:4 5 1 2 3,表示数组右循环移动了2个位置。
阅读全文