请编写程序将一个大小为n的整数数组循环左移m位

请编写程序将一个大小为n的整数数组循环左移m位。
大一计算机生数据结构的题目qaq我这个笨蛋是真的不会

按数学思路理解 这里是最最笨的一种方法: 有优化的方案,但这个应该最适合理解,你可以看看~


int main(void)
{
    const int n = 10;
    int a[n] = { 1,2,3,4,5,6,7,8,9,10 };
    int m = 3;
    //主要是思路 循环左移 是不是就是把前m个提取,把剩下的n-m个移动到最前面,然后剩下的位置再把m个放进去
    //最笨的办法就是申请同样大的内存  按位置放
    int res[n] = { 0 }; //这个存储最后的结果
    //就是把 4 5 6 7 8 9 10 1 2 3 存进来  分两步
    for (int i = m; i < n;  i++) //从第m个开始,往前面放,注意数组下标从零开始的
    {
        res[i - m] = a[i]; //这是把数据往前面的位置放 这里就是 放 4 5 6 7 8 9 10
    }

    for (int i = 0; i < m; i++)//把前面剩下的放到最后面去  也就是1 2 3放在上面已经赋值的后面
    {
        res[n - m +i] = a[i];//注意这里从n-m开始
    }

    for (int i = 0; i < n; i++)
    {
        printf("%d  ", res[i]);  //输出就是 4 5 6 7 8 9 10 1 2 3
    }
    printf("\n");
    return 0;
}