C++:已知数组为0至9,利用指针编写函数,使得将10个数中后N个数移动到数组前面,N为输入的整数。

输出样例如图所示:

代码如下:

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值