这样运行成功,输入错误,错在哪里?

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

慕粉4487960

2019-08-19 15: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 ,m == n)   //n循环结束后,如果m=n的话就输出m

            printf("%d  ", m);

}

}

return 0;    

}


写回答 关注

3回答

  • 坚持下去灬
    2019-08-22 13:16:40
    已采纳

    这个我我试过了,匝一想是可行的,后来我看了下发现问题  if里的等式是不成立的 m==n 是不可能的,因为在上面for  你已经定了 n<m  所以是不可能出现 n==m的情况的。所以你运行成功输出错误。  

    那么把上面的 n<m  换成n<=m 可行吗?   会输出东西,但是不是我们想要的素数。  你会发现  输出的结果是  2 3 4 5 6 7 。。。。     if(m%n==0 ,m == n)  因为每一个都可以被自身整除m%n==0    并且都可以成立 n=m 。

    所以这样写还是行不通的。

  • qq_宝慕林436213
    2019-08-19 16:04:12

    直接在下面加一个if(m=n)判断就可以了


    坚持下去灬 回复慕粉4487...

    你可以这样试试,我觉得你这个是可以的。 if(m%n==0&&m==n)

    2019-08-22 11:30:29

    共 2 条回复 >

  • 小小疾飞
    2019-08-19 15:59:46

    先不提正确结果怎么出来,但是if(m%n==0 ,m == n)这是什么东西?

    小小疾飞 回复慕粉4487...

    这样其实是用了逗号运算符,但是用在if的括号里总是不正确而且费解的。

    2019-08-21 16:14:54

    共 5 条回复 >

C语言入门

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

926206 学习 · 20797 问题

查看课程

相似问题