C菜鸟 请教一个简单的问题

为什么第三个大括号不能有?... 为什么第三个大括号不能有? 展开
 我来答
双廷墨G
2011-08-21
知道答主
回答量:17
采纳率:0%
帮助的人:30.3万
展开全部
第三个大括号加与不加的区别是:
加了,则最后一个if语句在第二个for循环的循环体内。
不加,则最后一个if语句在第二个for循环的循环体外。
很明显,for循环是先判断满足条件再执行循环体,不满足就结束循环。
对于第二个for循环,条件就是j<=m。
现在我们来跟踪一下加了括号的整个循环的过程。
在循环过程中,j的值从2开始增大,
当j<=m时,最后一个if语句判断为假,后边的printf不会执行。
当j=m+1时,不再满足条件,就不会执行循环体,而是直接退出循环。这时最后一个printf语句也自然不会执行。
于是,最后这个printf永远都不会执行。
而如果不加括号。最后一个if就只会在for循环全部结束以后才进行判断。
若break从来没有执行过,那么for循环是自己循环结束才退出循环的。这表示0到m中没有i的约数;这时,由上边的分析知道,循环自然结束时的j刚好=m+1.这时再去进行最后一个if判断,就会判断为真,也就会执行后边的printf语句。
而若是break语句在中途执行过而导致for循环结束,就表示0到m中有i的约数。这样for循环提前结束,j的值就不会增加到m+1,于是就不会满足最后一个if语句的判断,于是就不执行最后的printf.
从而就能正确输出素数了。
yinye147
2011-08-20
知道答主
回答量:37
采纳率:0%
帮助的人:17.5万
展开全部
当j=m+1,时循环结束,意味从小(大于1)到大自约数是自己,带上大括号后,进不去所以不能显示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hulongtian
2011-08-20 · 超过11用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:24.3万
展开全部
不支持这样的嵌套
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10620079wch
2011-08-20
知道答主
回答量:34
采纳率:0%
帮助的人:11.2万
展开全部
因为你总共只有2个{,所以不能有第3个}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式