编写一程序,将长度为n的一维数组各个元素向前移动m个位置,最前面的m个元素变成 最后面的m个数。 要求:数据处理通过函数实现,数据输入输出在主函数中进行 。void shift(int *x, int n, int m)
时间: 2023-11-22 21:54:08 浏览: 23
好的,以下是代码实现:
```c
#include <stdio.h>
void shift(int *x, int n, int m);
int main() {
int n, m;
printf("请输入数组长度n和移动的位置m:");
scanf("%d%d", &n, &m);
int a[n];
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
shift(a, n, m);
printf("移动后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void shift(int *x, int n, int m) {
int tmp[m];
for (int i = 0; i < m; i++) {
tmp[i] = x[i];
}
for (int i = m; i < n; i++) {
x[i - m] = x[i];
}
for (int i = 0; i < m; i++) {
x[n - m + i] = tmp[i];
}
}
```
代码思路如下:
首先输入数组长度n和移动的位置m,然后输入数组元素。
在shift函数中,我们首先将前m个元素存入一个临时数组tmp中,然后将后面的n-m个元素往前移动m个位置。最后将临时数组中的元素放到数组最后m个位置上。
最后在主函数中输出移动后的数组。
希望能够帮助到你!