鱼C论坛

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

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

[复制链接]
发表于 2018-7-21 16:40:35 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         float num = 0;
  5.         double sum = 0;
  6.         int status;

  7.         do
  8.         {
  9.                 printf("请输入合法的数字:");
  10.                 do
  11.                 {
  12.                         sum = sum + num;
  13.                         status = scanf("%f", &num);
  14.                 } while (getchar() != '\n'&&status==1);
  15.         } while(status == 1);

  16.         printf("结果是:%.2lf\n", sum);

  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-21 16:42:42 | 显示全部楼层
我感觉好像可以删去的把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-21 19:04:53 | 显示全部楼层
你这里是两层循环啊,status还控制着外层循环的进行,也就是是否在让用户输入。
删掉的话,外层肯定是死循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-21 20:26:48 | 显示全部楼层
TyCk 发表于 2018-7-21 19:04
你这里是两层循环啊,status还控制着外层循环的进行,也就是是否在让用户输入。
删掉的话,外层肯定是死循 ...

emmmmm,这个status的值不是由上面的scanf函数控制的吗,我测试下来好像是里面那个循环在输入非法数字时跳不出来呢
想知道小甲鱼最近在做啥?请访问 -> 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函数的详解,论坛里有的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 14:33:10 From FishC Mobile | 显示全部楼层
TyCk 发表于 2018-7-21 21:59
嗯,我在codeblocks里测试了下,结果输出为0,要把sum改成float类型,输出的%.2f,又加了两句getchar()才 ...

我好像说错了,我是想着把与运算符后面的那个去了的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

所以呢,我上面那段话,解释清楚没有,你有没有理解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-22 20:27:06 | 显示全部楼层
TyCk 发表于 2018-7-22 18:31
所以呢,我上面那段话,解释清楚没有,你有没有理解?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 13:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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