第二次以后子循环是重新赋值吗

来源:4-14 结束语句之break语句

闲默_

2018-08-17 12:44

就是, 当第一次父循环结束后,第二次进入子循环时还是用for中第一个赋值吗,还是用上次子循环后的值,如果是重新赋值的话,为什么还会出现m=n的情况呢,求大神搭救......

写回答 关注

3回答

  • miku酱的哲学之路
    2018-08-17 15:35:12
    已采纳

    哦哦,懂了,你要清楚那个m,n的定义范围,m,n是定义的局部变量,它们的作用范围包括整第一个for循环,直到return.......整个流程是这样的:

    第一次进入父循环,此时m=2,然后进入再进入子循环,n=2,这时if判断m是否能被n正除,如果能这m不为素数,这break跳出m=2的这个父循环,然后m++,再判断m=3的情况;如果不能整除,那很幸运,这个数就是我们要输出的素数,但是还要判断一下,只有当这个数等于除数的时候,这个时候它的所有情况(n<m)都已经判断完了,这个就是我们要输出的素数,及就为m=n这步代码。

    总得来说,这个两个for嵌套的循环体,第一父循环就是让我们从0~50之间每个数去试探一下每个数,但怎么试探来判断这个当前的m是素数呢?然后子for循环则就是判断的方法,则让当前的m去被除这个n(n的范围为0<n<m),逐个去试探,然后找出满足条件的素数。

    或许我有点啰嗦,但关于m=n的问题,例如,当m=3时,进入子循环,n=2,然后执行循环体里的内容后,加n++,这个时候n=3,但n不符合子循环体里的条件,则不执行子循环体里的内容,此时n=3咯~则n==m,怎么不可能出现m==n的情况呢?或许你for循环的这个流程或许不清楚吧~

    for(1,2,3){代码},先执行1,然后判断2,若为真,则执行代码,然后3,然后再判断2,是否为真,为真,则执行代码,不为真,则代表这个for循环结束.........

    大概就这些了,如果有什么问题的话,欢迎来问,加油哦!

    再几程 回复miku酱的...

    第一次可以进入循环吗?不是m和n都等于2吗,不符合n<m啊,应该不进入循环吧

    2018-11-11 22:32:44

    共 5 条回复 >

  • qq_尚海潮_0
    2018-08-17 16:21:19

    for里面不是写了吗  j=2就是重新赋值了。

    你假设m一个值,比如说m=7。

     此时的m,也就是7,让他除以2   

    发现不能整除,那么n+1变成3

     m一直除一直除,n一直+一直+,

     除到终于有一个数可以被整除,这时m一看,嘿这不是它本身嘛,判断if(m == n) 

    是的话就printf一个素数出来了 


    闲默_

    谢谢吼,我再慢慢想想

    2018-08-17 23:01:10

    共 1 条回复 >

  • miku酱的哲学之路
    2018-08-17 15:09:51

    可以附一下你思路中的伪代码吗?我阅读理解不是很好.........#滑稽

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题