循环练习题

1、空循环

int y=10;
while (y--) ;
printf(“y=%d\n”, y);

这里while (y–) ;处有分号,为空循环,直到y=0,退出循环,但还要再执行一次y-1,即y=-1

2、逻辑运算

int a=-2, b=0;
while (a++ && ++b) ;
printf(“%d, %d”, a, b);

1: a=-2,b=0-> a=-1 ,b=1 2: a=-1 ,b=1->a=0, b=2 3:
a=0, b=2结果a=0了,while判断此时的a不满足条件了,不会再去管&& 后的++b
因为条件不满足,循环体不会执行++b,所以b的值没有变化。
重点在于while(a++)这句,虽然当a=0的时候,条件已经不满足了,虽然循环体的东西不会执行,但是a++这句还是会执行a=1,
因此最后输出a=1,b=2

3、

int x=8;
for ( ; x>0; x--)//当x>0时,每一次循环完成后x--
{
        if (x%3) { printf(“%d,”, x--)//输出x之后,x--; continue; }
        printf(“%d,”, --x);//x自减后输出
}

解析一:
第一次执行if语句输出8,然后x自减变成7,然后执行continue;
第二次x自减变成6;不执行if语句,执行printf("%d",–x);先x自减变为5,然后输出;
第三次执行for循环里面X–;x变为4,执行if里面语句,输出4,再自减变为x=3;
第四次执行for循环中的x自减,变为x=2;执行if语句中的输出2,x自减变为1;
第五次执行for循环x自减,x变为0;循环结束。
总的来说,if函数里面输出执行了第一,三,四次,分别输出的8,4,2,for循环里的输出只有第二次执行了,输出为5.

解析二(自己过一遍):
1:x=8->for循环->if->输出8,x=x–=7,执行continue,进行下一次循环
2:此处执行for里的x–(每一次循环结束后x–),此时x=x–=7-1=6,因为此时x%3=6%3=0,不会执行后面的if语句了,直接执行
printf(“%d,”, --x);,此处x先递减后输出,所以输出的x=5
3:继续进行下一次循环,此时此处执行for里的x–,所以x=4,进入if语句,此时x%3=1,执行 printf(“%d,”,
x–);continue语句,此时输出x=4
4:此处执行if里的递减x=x–=3,继续进入下一次循环,进入for循环,执行x–(上次循环结束后才执行x–),此时x=x–=2,进入if语句,此时x%3=2,执行 printf(“%d,”, x–);continue语句,此时输出x=2,执行if里的x–,此时x=1
5:准备进入下一次循环,执行for循环里的x–,此时x=0,条件不满足,退出循环 所以x输出的值为:8、5、4、2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值