大佬求指教

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

qq_慕神645887

2019-02-24 22:16

输出m=3之后m执行第一个for语句的第三个代码自增成为4,判断m<=50为真,进入第二个for循环。
此时n=3,m=4,n<m成立,进行第二个for循环的if判断4%3==0结果为假,故n执行第二个for循环的第三块代码自增成为4
然后就会进行第一个for循环的if判断m==n,此时m=n=4,这输出不就有问题了么
希望大佬能解惑,我是哪一个地方思考出问题了吗

写回答 关注

1回答

  • 慕九州156408
    2019-02-25 18:44:42
    已采纳

    我是新手,不是大佬,但是可以回答这个问题。

    这里你把概念搞错了,第二个for语句一开始就在第一个分号前定义了n=2,所以顺序是这样的:

    (1)执行完m=3之后,m执行第一个for语句的第三个代码自增成为4,这里你理解没问题。

    (2)进入第二个for循环,重新定义n=2,(就是这里理解出错!!!)

    (3)判断n<m是否成立,此时m=4,n=2,所以n<m成立,进行第二个for的执行。

    (4)4%2==0结果为真

    后面就不用说了。你就是在第二步这里把for的定义给忘记了,所以嵌套的for需要注意这个。

    慕九州156... 回复qq_慕神6...

    取余没有取尽? 反正整体来看是这样:第二个循环的作用是对数字进行取余判定这样来判定是否为素数。 第一个循环作用是依次取需要进行判定的数字,假设称它们为“样本数字”。 每当“样本数字”被判定了一次,得出了结论,也就是第二个循环完成一次跳出,这个时候第一个循环进行下一个“样本数字”取值,然后再次进入第二循环,这次进入的时候,第二循环从头开始运行,n=2再次定义。

    2019-03-06 15:43:39

    共 4 条回复 >

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题