为了账号安全,请及时绑定邮箱和手机立即绑定

大佬求指教

输出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 回答

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

这里你把概念搞错了,第二个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需要注意这个。

2 回复 有任何疑惑可以回复我~
#1

qq_慕神645887 提问者

就是第二个for循环到4时,退出这个循环进行下个m==n啊,这时值n是等于4还是等于2啊
2019-02-28 回复 有任何疑惑可以回复我~
#2

qq_慕神645887 提问者

我知道重新定义n=2呀,但是他要自增到4才等式成立吧
2019-02-28 回复 有任何疑惑可以回复我~
#3

qq_慕神645887 提问者

我突然懂了,我的问题是取余没有取尽,谢谢大佬哈
2019-02-28 回复 有任何疑惑可以回复我~
#4

慕九州156408 回复 qq_慕神645887 提问者

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

大佬求指教

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信