鱼C论坛

 找回密码
 立即注册
查看: 3576|回复: 7

为什么将while后面括号里的status==1删除之后程序变成了死循环

[复制链接]
发表于 2018-7-21 19:04:53 | 显示全部楼层
你这里是两层循环啊,status还控制着外层循环的进行,也就是是否在让用户输入。
删掉的话,外层肯定是死循环了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-21 21:59:09 | 显示全部楼层
向上的蜗牛 发表于 2018-7-21 20:26
emmmmm,这个status的值不是由上面的scanf函数控制的吗,我测试下来好像是里面那个循环在输入非法数字时 ...

嗯,我在codeblocks里测试了下,结果输出为0,要把sum改成float类型,输出的%.2f,又加了两句getchar()才显示出结果来,不知为啥。
跳出来的话,用个英文字母就可以。
status由scanf控制,读取到非数字的时候,就不等于1了,两层循环就都跳出来了。
哦,你这么说,意思或许是把请输入合法数字那行放到第二个do里,外层循环就不需要了,但是事实是,当你输入类似于“5.4 4.3 5 5”的时候,它会循环读取,也就是先读取到5.4,然后判断空格不等于回车,继续读取4.3,依次下去,当读取结束,getchar为回车,status等于1,内层循环结束,外层循环继续,要求用户继续输入合法数字,这样说的话,你应该就明白了。
另外,建议你去看下scanf函数的详解,论坛里有的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 18:31:22 | 显示全部楼层
向上的蜗牛 发表于 2018-7-22 14:33
我好像说错了,我是想着把与运算符后面的那个去了的

所以呢,我上面那段话,解释清楚没有,你有没有理解?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 15:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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