标题:求错误处解决
只看楼主
muist
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-9
 问题点数:0 回复次数:4 
求错误处解决
void main()
{ int x=0,y,z;
  while(x<=19)
    {y=0;
      while(y<=33)
        {z=100-x-y;
        if (5.0*x+3*y+z/3.0==100.0)
      printf("%d %d %d\n",x,y,z,);
          x++;
        }
        z++;
      }
  }
搜索更多相关主题的帖子: void 
2013-04-16 17:51
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
if (5.0*x+3*y+z/3.0==100.0)

浮点数不要用==比较 可以double f = 5.0*x+3*y+z/3.0; f > 100.0 - eps && f < 100.0 + eps
不过 你既然是100整数 为什么要用浮点比较呢 (int)(5.0*x+3*y+z/3.0) == 100 不好吗?
当然如果你在意截断误差的话 也可以用 round函数啊

人生是一场错过 愿你别蹉跎
2013-04-16 18:02
liu_鹏
Rank: 2
等 级:论坛游民
帖 子:33
专家分:75
注 册:2013-4-16
得分:0 
你这个程序里面Y一直是0,X的最大值是19,所以Z的最小值是81,5.0*x+3*y+z/3.0永远〉100,所以不会执行输出语句。而Y一直是0,就出现了死循环。

不懂就发帖。懂了就恢复。
2013-04-16 18:33
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
得分:0 
百鸡百钱问题么?那么5.0*x+3*y+z/3.0==100.0这个表达式就不能这样写。要写成左右两边乘上3才会得出正确结果。
2013-04-16 18:53
muist
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-9
得分:0 
回复 4楼 abc594986308
谢谢
2013-04-16 20:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-404435-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046423 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved