有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面m个数。用c++语言编程写一个函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个整数。
时间: 2024-05-14 22:17:26 浏览: 86
两个有序顺序表的合并
5星 · 资源好评率100%
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
void shift(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 - m - 1; i >= 0; i--) {
arr[i + m] = arr[i];
}
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
}
int main() {
int n, m;
printf("Enter n: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d integers: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Enter m: ");
scanf("%d", &m);
shift(arr, n, m);
printf("Shifted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
该程序中,`shift`函数接收一个整数数组`arr`、数组长度`n`和移动距离`m`,并将数组元素向右移动`m`个位置。具体步骤如下:
1. 从原数组的最后`m`个元素中取出来,存放在一个临时数组`temp`中。
2. 从原数组的第`n-m-1`个元素开始,倒序遍历数组,将每个元素向右移动`m`个位置。
3. 将临时数组`temp`中的元素放到新数组的前`m`个位置。
在主函数中,首先从用户输入读取需要移动的数组长度`n`和数组元素,然后读取移动距离`m`。最后,调用`shift`函数来对数组进行移动,并输出移动后的数组。
阅读全文