课程
/后端开发
/C
/C语言入门
for循环,执行表达式1,n=2,然后表达式2,n<m,否,不就跳出循环了吗?
2017-07-15
源自:C语言入门 4-14
正在回答
那如果是4了 ?
钟阿瞒i
慕斯卡5168711
centrifugeSIW 回复 慕斯卡5168711
centrifugeSIW 回复 钟阿瞒i
你随便把一个数字带入里面,比如7,第一个For循环判断成立,进入第二For循环,此时n=2,m=7,m再这个循环里面是恒定的,成立,继续循环,接着n不断加一,最后加到7,才判定不成立,跳出循环,此时m=7,n=7,因为如果m=n就要输出出来,所以7被输出出来了。你可以试试把其它数字带入,m和n的值写出来,更好理解这个程序
centrifugeSIW
冷寒nn
for(m=2; m<=50; m++)
{
for(n=2; n<m; n++)
if(m%n==0) //什么条件下跳出当前循环
break; //这里应该退出当前循环了
}
if(m == n) //n循环结束后,如果m=n的话就输出m
printf("%d ", m);
这个m最开始的初始值为2然后进入子循环,发现不满足n<m这个条件跳过for(n=2; n<m; n++)这个循环,,满足if(m == n)打印出来这就是第一个素数2,然后m的自增1,继续循环
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
3 回答当m=4时的循环方式还是不明白
4 回答if(m==n)仅仅是为了判断for(n=2;n<m;n++),从而输出m=2的吗?
4 回答请问子循环for(n=2;n<m;n++)这个我怎么理解呢,第一次外部循环后m=2,n=2,然后n<m不成立,直接跳到了if(m==n),这句判断输出2了,再跳出自循环,n的值为3,m的值也是3了,又重复执行下去,到4的时候应该把4也同样输出来啊,我觉得这个逻辑应该把2到50之间所有的数都输出来,为什么自循环不是for(n=2n=m;n++)呢,我想不通!!
1 回答判断条件不大明白
2 回答第2个for循环为什么不是n<=m