夜蚀天 发表于 2021-9-28 23:00:30

求助

#include<stdio.h>
int main()
{
        int n,r,i=2;
        scanf("%d",&n);
        r=0;
while(i<=n/2&&r!=0);
{
if(r!=0) i=i+1;
r=n%i;
}
if(r!=0) printf("是素数");
elseprintf("是个屁");
        return 0;

}
为什么只有r=0才能运行

小伤口 发表于 2021-9-29 01:08:33

while(i<=n/2&&r!=0);
因为这里有r!=0这一句
如果你的r不等于0那么这个条件就为
false while循环也就不会执行
所以程序就只会执行到
int n,r,i=2;
      scanf("%d",&n);
      r=0;
这里

夜蚀天 发表于 2021-9-29 15:27:56

小伤口 发表于 2021-9-29 01:08
因为这里有这一句
如果你的r不等于0那么这个条件就为
false while循环也就不会执行


但是while语句不是里面的条件成立,它才能执行吗

小伤口 发表于 2021-9-29 19:30:11

夜蚀天 发表于 2021-9-29 15:27
但是while语句不是里面的条件成立,它才能执行吗

对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀

夜蚀天 发表于 2021-9-29 21:54:04

小伤口 发表于 2021-9-29 19:30
对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀

但是它可以输出正确答案啊

小伤口 发表于 2021-9-29 23:59:40

夜蚀天 发表于 2021-9-29 21:54
但是它可以输出正确答案啊

抱歉哈,我说错了
r!=0
这句是r不等于0的意思
while循环本来是判断输入的数是否为素数
但如果你的r不等于0 while就会永远为真(导致一直会在while循环出不来不能正常运行)
又因为你的 i 初始变量为2
i<=n/2
所以只要你的 n 小于4(也就是你输入小于4)
i<=n/2
这行代码就一直false就不会执行while循环
所以可以正常运行
页: [1]
查看完整版本: 求助