c语言解决循环左移和循环右移

循环左移:

例:1 2 3 4 5循环左移一位后变成2 3 4 5 1,循环左移两位后变成3 4 5 2 1。

下面用for循环实现:

int i,k,j,temp,a[n]={1,2,3,4,5};   //数组长度为n,所以最后一位的下标为n-1

for(i=0;i<k;i++) 

 //k为循环次数,这是一个外层循环,进行第一个左移循环后,i++,数组顺序变为2 3 4 5 1,进入内循环后数组的第一位是2,同样将其拿出来赋给一个变量,下面依次进行……

{

temp=a[0];         //将数组第一位的值先赋给一个变量

for(j=0;j<n-1;j++)   //内层循环

a[j]=a[j+1];         //将数组中的元素依次前移

a[n-1]=temp;       //将之前拿出来的第一位放到数组最后

}

图解:

(图上的数字为执行顺序)

循环右移

例:1 2 3 4 5循环右移一位后变成5 1 2 3 4,循环右移两位后变成4 5 1 2 3。

下面用for循环实现:

int i,j,k,temp,a[n]={1,2,3,4,5};

for(i=0;i<k;i++)           //外层循环,k为循环次数

{

temp=a[n-1];           //将数组元素最后一位存到temp变量中

for(j=n-1;j>0;j--)

a[j]=a[j-1];

a[0]=temp;          //将temp中的元素放到数组第一位

}

图解:

(图上的数字为执行顺序)

说明:循环左移和循环右移其实就是数组元素的逆置,这里简单说明一下:先将数组元素{1,2,3,4,5}中的前两位逆置变为{2,1,3,4,5},再将后三位逆置变为{2,1,5,4,3},再将整体逆置变为{3,4,5,2,1}。下一篇文章过几天我会详细写一下逆置有关的算法。

这是小南第一次发布csdn,一方面是加强自己的学习,相当于做了笔记,另一方面是希望我写的这些东西能尽可能帮助到不懂的同学。虽然我好菜,但。。还是继续努力吧呜呜呜

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值