李龙江 发表于 2019-10-22 16:41:11

C循环疑惑

这道题计算过程是怎么计算的啊?那位前辈可以给我讲解一下?

一个账号 发表于 2019-10-22 18:04:40

?

李龙江 发表于 2019-10-22 18:10:40

一个账号 发表于 2019-10-22 18:04
?

为什么这道题会选B啊?

一个账号 发表于 2019-10-22 18:16:17

李龙江 发表于 2019-10-22 18:10
为什么这道题会选B啊?

难道不是你选的?我不会

zwh1481017739 发表于 2019-10-22 18:27:31

最后那个a=3;??看不清

superbe 发表于 2019-10-22 18:57:20

本帖最后由 superbe 于 2019-10-22 20:30 编辑

初始值a==1, b==1
第一次循环后:a==6, b==2    (循环中执行了if(a%2==1){...}中的代码使a+5)
第二次循环后:a==3, b==3    (循环中执行了a=3)    换成 a -= 3结果是一样的, 6 - 3还是使 a 变成3。
第三次循环后:a==8, b==4    (循环中执行了if(a%2==1){...}中的代码使a+5)
第四次循环:满足a>=8退出

b是在循环体结束后下次循环体开始前自增1

李龙江 发表于 2019-10-22 19:33:47

zwh1481017739 发表于 2019-10-22 18:27
最后那个a=3;??看不清

a-=3

人造人 发表于 2019-10-22 21:51:46

来,先和我一起治疗颈椎病

hyolyn 发表于 2019-10-23 13:40:10

其实题目都不要细看,   猜都猜的到 问题出在b++      b++是先走流程 再计算.

python万 发表于 2019-10-23 13:42:57

就来看看c

鱼鱼鱼12 发表于 2019-10-23 15:18:59

这道题打印的变量是b。
首先看初始值,a=1,b=1。a小于8,所以不执行break语句;然后判断a%2是否等于1,此时条件成立,则执行a=a+5;此时a=6;continue结束本次循环,执行b++;
第二次进入循环,此时a=6,b=2;a小于8,所以不执行break;然后判断a%2是否等于1,条件不成立,则执行a=a-3;此时a=3;b++;
第三次进入循环,此时a=3,b=3;a小于8,所以不执行break;然后判断a%2是否等于1,条件成立,则a=a+5;此时a=8;continue结束本次循环,执行b++;
第四次进入循环,此时a=8,b=4;a大于等于8,执行break;
最后执行printf语句打印b的值。

4goodworld 发表于 2019-10-23 21:50:58

李龙江 发表于 2019-10-22 18:10
为什么这道题会选B啊?

你想选什么呢?
在b=4的时候,因为a=8了,所以直接被break了,没法继续执行b++了

永恒的蓝色梦想 发表于 2019-10-28 18:22:59

所以不选B选什么呢……
用PYTHON写的
这道题也没有文字游戏之类的啊……def main():
        a=1
        forb in range(1,10+1):
                if a>=8:
                        break
                if a%2==1:
                        a+=5
                        continue
                a-=3
        print(b)#4

huanzhilian 发表于 2019-10-28 20:55:20

看的脖子疼

一定学好C加油 发表于 2019-11-7 22:16:15

学到了

2164930278 发表于 2019-11-16 09:46:16

把代码运行一次就知道结果了
然后要是不懂的话就设置断点,慢慢调试!
页: [1]
查看完整版本: C循环疑惑