求解释下数组循环右移关键代码

问题:数组循环右移k个位置
输入两个整数k和n,再输入n个整数,使其前面各数顺序向右移动k个位置,即最后k个数变成最前面k个数。

求解释下关键代码


if(k>0&&k<=n)
       {
           for(i = 0;i < k; i++)
           {
              tmp = a[n-1];
              for(j = n-1; j >= 0 ;j--)
              {
                 a[j] = a[j-1];
              }
              a[0] = tmp;
           }
       }

第2行,先判断是否越界
第4行,循环k次
第6行,先把最后一个元素存起来,别弄丢了
789,循环n-1次,把a[j-1]赋值给a[j],这不就是整体右移了吗
第11行,把存起来的那个数还给a[0]
-=-=-=-
这就好比你有一盒鸡蛋,你需要把它们串个位置,但是鸡蛋盒是满的,你需要拿出一个鸡蛋先放一个安全的位置,一会好放回去,别搞没了