编程将含 N(设为 8)个整数的数组向右移动m(m小于N)列。如下列数组中的元寿向右移动m=2列。编写move函数,同时编写主函数输出结果。 测试数据:1 2 3 4 5 6 7 8结果为:7 8 1 2 3 4 5 6
时间: 2024-03-25 12:37:59 浏览: 95
好的,这是一个比较简单的数组移位问题,我们可以通过以下方式解决:
```c
#include <stdio.h>
void move(int arr[], int n, int m) {
int i, j, tmp;
for (i = 0; i < m; i++) {
tmp = arr[n-1];
for (j = n-1; j > 0; j--) {
arr[j] = arr[j-1];
}
arr[0] = tmp;
}
}
int main() {
int arr[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int m = 2;
move(arr, 8, m);
for (int i = 0; i < 8; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
我们首先定义了一个move函数来完成数组的移位,其中arr[]表示待移位的数组,n表示数组的长度,m表示需要向右移动的列数。
在函数内部,我们使用两个循环来完成数组的移位。外层循环控制移位的次数,内层循环则是将数组中的元素向右移动一列。
最后,在主函数中我们定义了一个长度为8的数组,并调用move函数将其向右移动2列。移位完成后,我们再次遍历数组并输出结果。
代码的输出结果为:7 8 1 2 3 4 5 6,符合预期。
阅读全文