搜索
查看: 1028|回复: 4
打印 上一主题 下一主题

这个运算过程是怎样的啊》求指教

[复制链接]
跳转到指定楼层
楼主
发表于 2013-12-7 22:25:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
void main( )
{ int a[10]={1,2,3,4,5,6},i,j;
  for(i=0;i++<3;)
    { j=a[i];a[i]=a[5-i];a[5-i]=j;}
  for(i=0;i<6;i++) printf("%d ",a[i]);  
}

最佳答案

查看完整内容

首先,这是一个循环,把i初始化为0 然后判断i是不是小于3,如果是,i自增1,进入循环体,交换的位置 第一次执行 i =0所以i小于3, i自增1,然后交换数组中两个元素的顺序,这次交换的是下标为1和下标为5-1 = 4的两项 第二次执行 i=1所以i小于3, i自增1,交换下标为2和下标为3两项的位置 第三次执行 i= 2所以i小于3, i自增1,交换下标为3和下标为2两项的位置 第四次执行 i=3所以i
沙发
发表于 2013-12-7 22:25:18 | 只看该作者
cola 发表于 2013-12-7 23:11
很抱歉,我还是不太懂。我是初学者,能不能讲得再详细一点,麻烦啦!

首先,这是一个循环,把i初始化为0

然后判断i是不是小于3,如果是,i自增1,进入循环体,交换

  1. a[i]和a[5-i]
复制代码
的位置

第一次执行
i =0所以i小于3, i自增1,然后交换数组中两个元素的顺序,这次交换的是下标为1和下标为5-1 = 4的两项

第二次执行
i=1所以i小于3, i自增1,交换下标为2和下标为3两项的位置

第三次执行
i= 2所以i小于3, i自增1,交换下标为3和下标为2两项的位置

第四次执行
i=3所以i<3判断失败,从循环中退出

第二次和第三次交换反过来,相当于没做,只交换了下标为1和下标为4两项的位置
所以就是
1 5 3 4 2 6
板凳
发表于 2013-12-7 22:51:08 | 只看该作者
等价于

  1. i = 0;
  2. while(1){
  3.   i += 1;
  4.   swap(a[i], a[5-i]);
  5.    if(i >= 3)
  6.     break;
  7. }
复制代码
地板
 楼主| 发表于 2013-12-7 23:11:07 | 只看该作者
很抱歉,我还是不太懂。我是初学者,能不能讲得再详细一点,麻烦啦!
5#
 楼主| 发表于 2013-12-7 23:48:48 | 只看该作者
懂了,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表