用c语言数组的相关知识编写程序达到以下功能:有n个整数,使前面各数顺序向后移m个位置,最后m个变成最前面的m个数
时间: 2023-12-20 13:51:51 浏览: 79
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
以下是实现该功能的示例代码:
```c
#include <stdio.h>
void rotate(int arr[], int n, int m);
int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int m = 2;
rotate(arr, n, m);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
void rotate(int arr[], int n, int m) {
// 先将前面n-m个数逆序
for (int i = 0, j = n - m - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 再将后面m个数逆序
for (int i = n - m, j = n - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 最后将整个数列逆序
for (int i = 0, j = n - 1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
```
该程序中,`rotate`函数用于实现数组旋转功能。它先将前面n-m个数逆序,再将后面m个数逆序,最后将整个数列逆序。这样旋转后前面的m个数就变成了原来的后面m个数。
在`main`函数中,我们定义了一个整型数组`arr`,包含了一些测试数据。我们将数组长度`n`设置为`sizeof(arr) / sizeof(arr[0])`,这样就可以动态计算出数组的长度。然后我们定义了旋转的位移量`m`,并调用`rotate`函数对数组进行旋转。最后我们遍历数组并打印每个元素的值,以验证旋转是否成功。
阅读全文