| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 350 人关注过本帖
标题:一个很费解的问题
只看楼主 加入收藏
寂寞花裤衩
Rank: 1
等 级:新手上路
帖 子:30
专家分:8
注 册:2010-4-17
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
一个很费解的问题
有个问题,公鸡5块,母鸡3块,小鸡3个一块,100块买100只鸡,问买多少!~
我写了两个程序
#include<stdio.h>
void main()
{
 int a,b,c,num,price ;

 for(a=1;a<20;a++)
  {
     for(b=1;b<34;b++)
    {
     for(c=1;c<100;c++)
        {

           num = a+b+c;
           price = 5*a+3*b+c/3;
          if(num==100&&price==100)

          printf("Cock:%d\nHen:%d\nChick:%d\n\n",a,b,c);
                  }
              }  
   }


}
# include <stdio.h>
 void main ()
{
 int a,b,c1,c2;
 for (a=0;a<=20;a++)
  {
   for (b=0;b<34;b++)
    {
       c1=(100-5*a-3*b)*3;
       c2=100-a-b
       if (c1==c2)
        printf("Cock:%d\nHen:%d\nChick:%d\n\n",a,b,c1);
     }
   }
 }

第一个输出的结果比第二个多出来两个,多出来的这两组结果中  鸡的数目是100,但是小鸡的数目不能被3整除,但是算钱的时候是约等于100的!~老师曾经给我们说可能是什么数目太小引起的错误,所以我将第一个里面的 if 的 条件 改成了 fabs(num-100)<1e-5&&fabs(price-100)<1e-5  ,但是这样出来的 结果就完全不对了!~~

请高手解释下!~这两个程序哪里不一样,为什么第一个输出的结果多出来两个!~
搜索更多相关主题的帖子: include price 
2010-04-21 13:00
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:20 
问题出在:price = 5*a+3*b+c/3;这里

这里c/3是按int型处理, 也就是 c=3n, 3n+1,3n+2 最终的c/3都是n

所以第一个输出的结果比第二个多出来两个并不奇怪.....
所以办法就是:
将for(c=1;c<100;c++)
改为:
for(c=3;c<100;c += 3)

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-04-21 13:27
寂寞花裤衩
Rank: 1
等 级:新手上路
帖 子:30
专家分:8
注 册:2010-4-17
收藏
得分:0 
谢谢!~
2010-04-21 17:01
快速回复:一个很费解的问题
数据加载中...
 
   



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

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