编写程序,用指针实现以下功能, n 个整数存入一维数组中,将该数组循环左移 m 位。如一个长度为10的数组中原来的元素顺序为0123456789,则循环左移3个位置后元素的顺序为3456789012。
时间: 2023-12-14 20:01:10 浏览: 167
首先,我们需要定义一个函数来实现循环左移的功能。这个函数将接受一个整型指针和两个整数作为参数,分别代表存放整数的数组的起始地址、数组的长度和左移的位数。函数的实现如下:
```c
void shiftLeft(int *arr, int n, int m) {
int temp[m];
for (int i = 0; i < m; i++) {
temp[i] = arr[i];
}
for (int i = 0; i < n - m; i++) {
arr[i] = arr[i + m];
}
for (int i = 0; i < m; i++) {
arr[n - m + i] = temp[i];
}
}
```
然后,在主函数中,我们可以先定义一个长度为 n 的整型数组,并给数组赋初值。接着调用上面定义的函数来实现循环左移的功能。
```c
#include <stdio.h>
int main() {
int n = 10; // 数组长度
int arr[n] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始数组
int m = 3; // 左移位数
shiftLeft(arr, n, m); // 调用函数进行左移
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行以上程序后,输出就会是:3 4 5 6 7 8 9 0 1 2。这就是数组循环左移3个位置后元素的顺序。通过指针操作,我们可以方便地实现数组的循环左移功能。
阅读全文