1)编写函数void moveLeft(int *a, int n) 将一个具有n个元素的数组a循环左移1位。 (2)编写函数void rotateLeft(int *a, int n, int k),在该函数中循环调用k次moveLeft()函数,最终实现将数组循环左移k位。 (3)主函数中定义并初始化数组a,输出数组原始数据。任意输入k,调用rotateLeft()函数实现将数组循环左移k位,最后在主函数中输出结果数组。 (4)在上述函数中,均要求用指针访问数组元素。
时间: 2023-06-19 11:06:48 浏览: 160
下面是代码实现:
```c++
#include <iostream>
using namespace std;
void moveLeft(int *a, int n) {
int temp = a[0];
for (int i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = temp;
}
void rotateLeft(int *a, int n, int k) {
for (int i = 0; i < k; i++) {
moveLeft(a, n);
}
}
int main() {
int n;
cout << "请输入数组长度:";
cin >> n;
int *a = new int[n];
cout << "请输入数组元素:" << endl;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cout << "原始数据为:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
int k;
cout << "请输入要循环左移的位数k:";
cin >> k;
rotateLeft(a, n, k);
cout << "循环左移" << k << "位后的数组为:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
这里用两个函数实现了数组的循环左移操作,其中 `moveLeft()` 函数实现将数组循环左移1位,而 `rotateLeft()` 函数则循环调用 `moveLeft()` 函数,实现将数组循环左移k位。在主函数中,先输入数组元素和要循环左移的位数k,然后调用 `rotateLeft()` 函数进行循环左移操作,并输出结果数组。注意,这里使用了动态内存分配,需要在程序结束时释放内存。
阅读全文