输出样例如图所示:
代码如下:
#include <iostream>
using namespace std;
void move(int* a, int n, int N)
{
// p 指向数组 a 的第 n-1 个元素
int* p = a + n - 1;
// q 指向数组 a 的第 n-1-N 个元素
int* q = p - N;
// 动态分配一个大小为 N 的整数数组 temp
int* temp = new int[N];
// 将 q 开始的 N 个元素复制到 temp 数组中
for (int i = 0; i < N; i++)
{
temp[i] = *(q + i);
}
// 将 p 开始的元素依次向前移动 N 个位置
for (int i = n - 1; i >= N; i--)
{
*(p--) = *(p - N);
}
// 将 temp 数组中的元素复制到数组 a 的前 N 个位置
for (int i = 0; i < N; i++)
{
*(a + i) = temp[i];
}
// 释放动态分配的 temp 数组内存
delete[]temp;
}
int main()
{
// 定义并初始化一个包含 11 个元素的数组 a
int a[11] = { 0,1,2,3,4,5,6,7,8