有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。例如有8个整数1,2,3,4,5,6,7,8向后移动3个位置后变成6,7,8,1,2,3,4,5。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
#include <stdio.h>
void rotateArray(int *arr, int n, int m) {
int temp[m];
for (int i = 0; i < m; i++) {
temp[i] = arr[n - m + i];
}
for (int i = n - 1; i >= m; i--) {
arr[i] = arr[i - m];
}
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
}
int main() {
int n, m;
printf("Enter number of elements (n): ");
scanf("%d", &n);
int arr[n];
printf("Enter the elements: ");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Enter number of positions to rotate (m): ");
scanf("%d", &m);
rotateArray(arr, n, m);
printf("Rotated array: "