📅  最后修改于: 2023-12-03 15:14:04.670000             🧑  作者: Mango
本文将介绍如何使用C++编程语言编写一个程序,实现将一个数组拆分成两个部分,并将第一部分添加到数组的末尾的功能。该方法可以实现数组的环形位移。
本程序的实现思路如下:
基于上述思路,我们可以使用下面的C++代码来实现:
#include <iostream>
using namespace std;
// 定义数组长度的最大值
const int MAX = 100;
// 实现数组环形位移
void moveArray(int arr[], int len, int pos)
{
// 检查分割位置是否合法
if (pos > len) {
cout << "Error: invalid position." << endl;
return;
}
// 创建一个临时数组
int tmp[MAX];
// 首先将待处理部分拷贝到临时数组中
for (int i = 0; i < pos; i++) {
tmp[i] = arr[i];
}
// 将后半部分数据移到数组开头
for (int i = 0; i < len - pos; i++) {
arr[i] = arr[i+pos];
}
// 将临时数组中的数据添加到数组末尾
for (int i = 0; i < pos; i++) {
arr[len-pos+i] = tmp[i];
}
}
int main()
{
int arr[MAX], len, pos;
// 读取待处理数组的长度和数据
cout << "Enter the length of the array: ";
cin >> len;
cout << "Enter the array elements: ";
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
// 读取分割位置
cout << "Enter the split position: ";
cin >> pos;
// 进行数组位移操作
moveArray(arr, len, pos);
// 输出结果
cout << "The result is: ";
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
以下是一个示例运行结果:
Enter the length of the array: 5
Enter the array elements: 11 22 33 44 55
Enter the split position: 3
The result is: 44 55 11 22 33
我们输入了一个长度为5的数组,包含元素11、22、33、44和55。我们将这个数组以位置3为分割点进行了位移操作,然后将结果打印出来,我们可以看到,位移后的数组元素为44、55、11、22和33,符合我们的预期结果。