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

第一步m不是已经等于三了吗,那个2是怎样输出来的

#include <stdio.h>
int main()
{
    int m, n;
    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);
 }
 return 0;    
}


正在回答

5 回答

给你两张图你就明明白白的。

https://img1.sycdn.imooc.com//5c9b4ce700013b1303130095.jpg

https://img1.sycdn.imooc.com//5c9b4ce70001a0e404290203.jpg


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

慕圣7336102

还是不懂,第一次m=2 n=2 里面的表达式是n=2;n<2;n++,n<2不满足,不就不执行了吗,不就m++了吗
2019-10-15 回复 有任何疑惑可以回复我~

第一次m=2 n=2 里面的表达式是n=2;n<2;n++  所以只执行一次 2除以2 余0 直接跳出循环 此时n的值是2 m==n所以输出m=2

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

乔琬

第一次m=2 第二层for循环中,变量初始值n=2不满足表达式2中的n<m,即n<2。故此循环不是你所说的只执行一次而是0次。
2019-04-01 回复 有任何疑惑可以回复我~
#2

GOLDENBOY1

答案正解
2019-05-05 回复 有任何疑惑可以回复我~
#3

慕瓜3168352

n<2 不满足为啥还执行一次呢
2019-06-02 回复 有任何疑惑可以回复我~

m++ 是运算完在+1 所以第一次循环m=2


0 回复 有任何疑惑可以回复我~

它是先判断m<=50,然后执行代码区,然后在m++

应该是这样哈

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

第一步m不是已经等于三了吗,那个2是怎样输出来的

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