鱼C论坛

 找回密码
 立即注册
查看: 3471|回复: 5

求助

[复制链接]
发表于 2021-9-28 23:00:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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("是素数");
else  printf("是个屁");
        return 0;

}
为什么只有r=0才能运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 15:27:56 | 显示全部楼层
小伤口 发表于 2021-9-29 01:08
因为这里有这一句
如果你的r不等于0那么这个条件就为
false while循环也就不会执行

但是while语句不是里面的条件成立,它才能执行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 19:30:11 From FishC Mobile | 显示全部楼层
夜蚀天 发表于 2021-9-29 15:27
但是while语句不是里面的条件成立,它才能执行吗

对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-29 21:54:04 | 显示全部楼层
小伤口 发表于 2021-9-29 19:30
对呀,所以你r不等于0条件不成立不执行while循环,程序结束了呀

但是它可以输出正确答案啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)
[code]i<=n/2
[/code]
这行代码就一直false就不会执行while循环
所以可以正常运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 02:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表