
4个回答
展开全部
第三个大括号加与不加的区别是:
加了,则最后一个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.
从而就能正确输出素数了。
加了,则最后一个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.
从而就能正确输出素数了。
展开全部
当j=m+1,时循环结束,意味从小(大于1)到大自约数是自己,带上大括号后,进不去所以不能显示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不支持这样的嵌套
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你总共只有2个{,所以不能有第3个}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询