问答详情
源自:4-14 结束语句之break语句

不是先判断再循环吗?我也不明白n<m的问题

for循环,执行表达式1,n=2,然后表达式2,n<m,否,不就跳出循环了吗?

提问者:xyu 2017-07-15 09:14

个回答

  • 慕斯卡5168711
    2017-07-31 13:10:36

    那如果是4了 ? 

  • 冷寒nn
    2017-07-27 16:07:10

    你随便把一个数字带入里面,比如7,第一个For循环判断成立,进入第二For循环,此时n=2,m=7,m再这个循环里面是恒定的,成立,继续循环,接着n不断加一,最后加到7,才判定不成立,跳出循环,此时m=7,n=7,因为如果m=n就要输出出来,所以7被输出出来了。你可以试试把其它数字带入,m和n的值写出来,更好理解这个程序

  • MISS_time
    2017-07-15 16:13:22

        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,继续循环