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

来源:4-14 结束语句之break语句

蝈蝈煮茶

2019-09-11 21:41

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

写回答 关注

4回答

  • 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的判断条件中已经包含了=,所以在接下来的条件判断中可考虑省略相等管关系的判断

    超优秀

    是因为m=2,n=2吗?求解答,要不睡不着啊

    2020-03-30 19:22:59

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926020 学习 · 20793 问题

查看课程

相似问题