C语言//关于一维数组移动的理解

1  现有一维数组a[10],要求向左移动一位,之后向右移动还原它。

#include<stdio.h>  
main()
{int i,x;
int a[10]={11,22,33,44,55,66,77,88,99,100};
for(i=0;i<10;i++)
printf(" %d",a[i]);printf("\n");//输出一下初始数组

x=a[0];//左移之后,a[0]要被覆盖,所以先把a[0]赋给X
for(i=0;i<=8;i++)
a[i]=a[i+1];//此处看下面具体分析
a[i]=x;//亦可写作a[9]等于X。因为走完for语句之后,i等于9,把a[0]即x赋给了空位a[9]。
for(i=0;i<10;i++)
printf(" %d",a[i]);printf("\n");
 
x=a[9];//同理,右移之后,a[9]要被覆盖,所以先把a[9]赋给X
for(i=9;i>=1;i--)
a[i]=a[i-1];//此处看下面具体分析
a[i]=x;//亦可写作a[0]等于X。因为走完for语句之后,i等于0,把a[9]即x赋给了空位a[0]。 
for(i=0;i<10;i++)
printf(" %d",a[i]);	
}

左移分析:

for(i=0;i<=8;i++)                                                                                                                                                                 
a[i]=a[i+1]
;

具体走法
a[0]=a[1];
a[1]=a[2];
a[2]=a[3];
...............
a[8]=a[9];

之所以i<=8,就是i+1不能等于10,如果是i<10的话,多了一步a[9]=a[10],数组最后一位就是a[9],没有a[10]所以会发生错误!

右移分析:

for(i=9;i>=1;i--)
a[i]=a[i-1];

具体走法
a[9]=a[8];
a[8]=a[7];
a[7]=a[6];
.............
a[1]=a[0];




 

之所以i>=1,就是i-1不能小于0,如果是i>=0的话,多了一步a[0]=a[-1],数组位置从0开始,没有a[-1],所以会发生错误!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值