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

将for(n=2;n<m;n++)改为for(n=2;n<=m;n++)是否更容易理解 运行上是否正确

#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;   
}

提问者:蝈蝈煮茶 2019-09-11 21:41

个回答

  • qq_变幻_aeHTZ6
    2019-09-29 10:04:43

    你可以先把if(m==n)删掉,看运行结果就容易理解一点了

  • 慕先生2563854
    2019-09-29 00:44:58

    运行没有影响,但是对代码运行的理解是不一样的。for(表达式1;表达式2;表达式3),前面有流程图说明三个表达式运行的顺序。1.没有=情况下,意思是在除1与本身以为,不存在整除数,不会提前跳出形成n!=m的情况,因此会在n=m-1执行最后一次循环后,进行n++运算,再进行n<m判断,明确的是,在这里已经存在了n=m,所以跳出循环。2.你加了=号的情况,更利于理解成,在找到n=m前,没有找到其他整除数,最后找到了n=m。这里需要提醒的是,如果在后面会用到n的值,需要清晰的理解n=?

  • 只为更好的我
    2019-09-17 23:52:33

    运行上没问题,没什么影响

  • weixin_慕仰4124956
    2019-09-12 11:04:09

    首先你的程序写得很乱,我指的是格式,可读性很差。其次改为<=只是在for的判断条件中已经包含了=,所以在接下来的条件判断中可考虑省略相等管关系的判断