for循环中的一个语句看不明白,谁指教下 谢谢

 我来答
乙望亭汤培
2019-06-01 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:27%
帮助的人:883万
展开全部
给你换个写法你就明白了:
for(n=2;n<=100;n++)
{
for(i=2;i
=n)
printf("\t%d",n);
}
因为【break;】后面有分号,所以第二个for循环到此结束,
你疑惑的【if(i>=n)
printf("\t%d",n);】实际上是属于第一个for
循环的语句。
这样解释,相信你就明白了,就不用再解释过程了吧。
**************
补充下:这应该是一个求1-100之间的质数的函数。
当n能被2至n之间的数整除的时候:跳出循环
【for(i=2;i
=n)
printf("\t%d",n);】
如n=2的时候
1:(n=2)<=100
满足进入循环
2:(i=2)<(n=2)不成立,循环不进入
3:(i=2)>=(n=2)成立,说明n=2是质数,打印
4:n++

n=3
5:(n=3)<=100
满足进入循环
6:(i=2)<(n=3)成立,循环进入
7:(n=3)%(i=2)!=0
i++
后i=3
<
(n=3)不成立,循环停止
8:(i=3)>=(n=3)成立,说明n=3是质数,打印
**************
%%%%%%%%%%%%%%
再补充:
怎样理解无所谓,只要思路正确就可以。
1、【跳出循环后判断下i是不是一直加到了n】这句话有点歧义,换成【结束循环后判断下i是不是一直加到了n】可能会好点。
2、【如果能被输出出来】说明i此时一定【=n】,换句话说【n%i==0】一直没有成立,也就是从2至n-1
都没有满足【n%i==0】(这正是质数的定义)
3、按照我的分析,我认为完全可以改成【if(i=n)
printf("\t%d",n);】
%%%%%%%%%%%%%%
---
以上,希望对你有所帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式