| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 839 人关注过本帖
标题:百鸡百钱问题,为什么不对呢?
只看楼主 加入收藏
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
 问题点数:0 回复次数:8 
百鸡百钱问题,为什么不对呢?

public class A
{
public static void main(String[] args)
{
int x,y,z;
for(x=0;x<100;x++)
{ for(y=0;y<100;y++)
{for(z=0;z<100;z++)
{ if( 5x+3y+(1/3)z=100 && x+y+z=100 )
{ System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("z="+z);
}
}
}
}
}
}

为什么运行时总说不对呢?
还有这个代码是不是太麻烦了?能不能请高手帮忙优化一下?
谢谢。

搜索更多相关主题的帖子: public 
2006-08-20 17:21
jxry8888
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-8-13
收藏
得分:0 
public class A
{
public static void main(String[] args)
{
int x,y,z;
for(x=0;x<=20;x++)
{ for(y=0;y<34;y++)
{for(z=0;z<=100;z++)
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)
{
System.out.println("x="+x +" y="+y+" z="+z);
}
}
}
}
}
}

2006-08-20 18:10
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)

{ if( 5*x+3*y+(1/3)*z==100 && x+y+z==100&&z%3==0 )



这两个部分为什么不一样?
下面的为什么不对?
2006-08-20 19:45
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 
5x+3y+(1/3)z=10你可是这么写的啊!

win32汇编
病毒 加密
目前兴趣所在
2006-08-20 21:42
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 
第二种方式是错的,运行来看似乎没有把1/3*Z的值加到100的总数内。
为什么?
谢谢。
2006-08-21 02:23
jxry8888
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-8-13
收藏
得分:0 
以下是引用chengsencs在2006-8-20 19:45:19的发言:
{ if( 5*x+3*y+z/3 == 100 && x+y+z == 100 && z%3==0)

{ if( 5*x+3*y+(1/3)*z==100 && x+y+z==100&&z%3==0 )



这两个部分为什么不一样?
下面的为什么不对?

注意(1/3)*z,这一句话,首先是(1/3)先运算,因为()的优先级比*的优先级高,然尔(1/3)==0,再乘上Z,仍然等于0,所以+(1/3)*z,就相当于没有加!


2006-08-21 06:35
jxry8888
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-8-13
收藏
得分:0 

我理解的可能不对,还请楼下的补充,纠正


2006-08-21 06:36
chengsencs
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2006-7-24
收藏
得分:0 

public class A
{
public static void main(String[] args)
{
int a;
for(a=1;a<=100;a++)
{ if((1/3)*a>0)
System.out.println("a="+a);
}
}
}

应该是对的了,楼上的。看看这个程序,没有输出。所以(1/3)*a恒为0。

2006-08-21 13:11
轩辕氏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-8-18
收藏
得分:0 
楼上所说的(1/3)*a 这个式子中,1 3 a这三个数据都是int型的,所得的结果只保留整数部分,所以这个式子总是得0,因为1/3不到1,保留结果只能是0
2006-08-22 16:58
快速回复:百鸡百钱问题,为什么不对呢?
数据加载中...
 
   



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

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