分析
首先,这个是前面那个代码的升级版,我们暂时先不考虑时间复杂度的问题。先说说之前代码的缺陷。
第一个:之前没有考虑到如果移动的位数大于数组长度,那我们就相当于做了一个重复的事情,比如说移动十二位 ,我们数组长度有十位,那么 ,移动十位后就和原来的数组一模一样。
所以 ,我们应该提出一个解决方法。
第二个:我们没有考虑到负数的情况 ,万一用户输入了负数,那么我们就可以把它处理为右移。
设计
运用一个取模运算,这样就可以解决我们所提出来的第一个问题。
第二个怎么解决呢? 其实也很简单,我们可以用if语句判断一下 ,如果小于0,那么我们就取它的相反数,再调用右移函数。、
代码实现
#include<iostream>
using namespace std;
//函数声明
void Left_Move(int *a, int len);
void Right_Move(int *a, int len);
void PrintArray(int *a, int len);
void Left_Move_n(int *a, int len, int n);
void Right_Move_n(int *a, int len, int n);
void Cir(int n, int len, int *a);
int main(){
int a[