java不会,写个c的,方法是一样的。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、德兴网站维护、网站推广。
一百块可以买公鸡20只,母鸡33只,鸡仔100只。也就是说这三种鸡无论怎么组合,公鸡不可能超过20,母鸡不可能超过33,鸡仔不可能超过100。所以一个三重for循环就可以遍历所有组合,找出符合要求的组合。而且,你题目不完整,给你一个100钱能买的鸡的所有组合。如果要百钱买百鸡的话,把if语句的条件换成i+j+k==100即可。
for(int i=0;i=20;++i)
for(int j=0;j=33;++j)
for(int k=0;k=100;++k)
if(5*i+3*j+k==100)
printf("公鸡%d只,母鸡%d只,鸡仔%d只",i,j,k);
public void test(){
int sum = 0; //买法总数
//公鸡每只5块,一百元最多买100/5=20只公鸡
for(int gj=0;gj=20;gj++){
//(100-gj*5)买完公鸡剩下的钱,母鸡每只3块,剩下的钱最多可买(100-gj*5)/3只母鸡
for(int mj=0;mj=(100-gj*5)/3;mj++){
//(100-gj*5-mj*3)买完公鸡、母鸡剩下的钱,小鸡一块钱3只,剩下的钱可买(100-gj*5-mj*3)*3只小鸡
int xj = (100-gj*5-mj*3)*3;
System.out.println("公鸡:"+gj+" 母鸡:"+mj+" 小鸡:"+xj);
sum++;//每次自增一,用于统计买法个数
}
}
System.out.println("一共有"+sum+"种买法");
}
public class HundredChicken {
/**
*
* @param args
*/
public static void main(String[] args) {
int cock; //公鸡
int hen; //母鸡
int chick; //小鸡
for(cock=0;cock20;cock++){
for(hen=0;hen34;hen++){
chick = 100-cock-hen;
if((5*cock+3*hen+chick/3)==100){
System.out.println("公鸡:"+cock+"只;母鸡:"+hen+"只;小鸡:"+chick+"只");
}
}
}
}
}
我国古代有一道有名的数学问题,即百钱买百鸡的问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
古人所说的鸡翁即公鸡,鸡母即母鸡,鸡雏即小鸡。公鸡每只五钱,母鸡每只三钱,小鸡每只三分之一钱,即三只小鸡共值一钱。
一般人想解决这一问题只能靠凑数,这样做既费时间,效果又很差。但是,若用计算机的高级语言(如C语言)来做,则显得很容易。
在正式介绍C语言之前先来看一个C程序的例子,就是解决上面问题的C语言程序。
例1 百钱买百鸡的C语言程序(初步程序)
main()
{
int i,j,k
for (i=1;i=20;i++)
for (j=1;j=33;j++)
{
k=100-i-j;
if (i*5+j*3+k/3=100)
printf("%d,%d,%d\n",i,j,k);
}
}
在此对C程序先作些解释,在以后的课程中我们会继续作出相应的解释。C程序是由一个或多个函数构成,函数由函数名并紧跟一对园括号( )及其后面的一对花括号组成,如:
main( )
{
}
函数名由任意的一至八个字符组成,如上面的main( ) { },花括号中内容叫函数体。组成C程序的诸多函数中,必须有一个且只有一个名为main的函数,称为主函数,也就是说C程序由一个主函数main( ),及其它函数组成,各个函数名不能相同;也可以只有主函数而没有其它函数。函数名后圆括号中,可以有若干个参数,也可以没有参数。但花括号中必须有函数体。其实函数体才是真正解决问题的程序。
函数体中的内容一般可分为两部分:说明部分和执行部分。
1.说明部分: int i,j,k 为说明部分,它说明了三个变量i,j,k 都是整数类型的变量,int 是英语整数 integer 的缩写。说明部分除了可以说明整型变量之外,还可以说明其它变量,这些内容我们以后还会再碰到,这里不多讲了。在此要强调的一点是C语言和有的计算机语言不同,所有在执行部分中使用的变量,都必须事先在说明部分中说明,否则就不能在执行部分中使用
2.执行部分:说明部分之后都是执行部分,它由两个嵌套的for语句组成。for语句是循环语句,循环语句的一般形式是:
for(第一表达式;第二表达式;第三表达式;)
循环体;
其中:第一表达式:一般用来指明循环的开始值;第二表达式:用来指明循环的终止值;第三表达式:用来指明每次循环的增加值;循环体是循环的执行部分,它可以是一个语句,也可以是多个语句,由多个语句组成的循环体称复合语句循环体,复合语句必须用花括号括起来,如上述程序中的:
{
k=100-i-j;
if (i*5+j*3+k/3=100)
printf("%d,%d,%d\n",i,j,k);
};
这是由两个语句构成的复合语句,前一个
k=100-i-j;
称赋值语句;后一个
if (i*5+j*3+k/3=100)
printf("%d,%d,%d\n",i,j,k);
选择语句,每一个语句都应包含其后面的分号,在C语言中没有分号不能称为语句。
在上述C程序中的执行部分中,for语句是两层,是for语句的嵌套,即二重循环,后面紧接着的花括号里的便是循环体,它是一个复合语句。语句的种类较多,以后会逐步讲的。
(1).看一看:我们看了一个百钱买百鸡的问题,问题是提出来了,但并没有完全解决,另外,我们也看了一个C语言的程序,虽然,还不大懂,但已有了一些了解。
(2).想一想:学完这一讲后,我们应该想一想:C程序的结构大概是什么样的?函数的结构又是什么样的,两者有什么关系?for循环语句的结构是什么样的;复合语句的结构又是什么样的!
(3).做一做:每讲完了我们都应动手做一做,因刚开始不能上机去做贸待后面再补做吧!下一讲我们准备讲一讲解决百钱买百鸡问题的算法,再下一讲介绍C语言上机操作的步骤,到那时我们可以把上述C程序打入计算机中去操作了!
package ma;
public class ma {
public static void main(String[] args)
{
for (int i=1;i= 20;i++)
for (int j=1;j=33;j++ )
for (int k=3;k=100;k=k+3)
{
if (i*5+j*3+k/3==100i+j+k==100)
System.out.println(i+" "+j+" "+k);
}
}
}
我英语非常地不好。你可以试试把变量名改改,唉,丢人了
在java里面,%是代表取余数,k%3==0代表的是k能被3整除。如果k=7的话,k%3=1
/ 代表的是除法运算,除法运算就有一个精度的考虑了。java默认除法的精度是和你的变量的精度是一样的,假如k=20,那么k/3=6。因为k是int型,3默认也是int型。同样,
k/3.0=6.666666666666667,因为3.0是浮点型。
再来看楼主的条件判断k%3==0这个代表了K能被3整除,而5*i+3*j+k/3.0==100这个表单式只有在k为3的倍数时,才能==100,所以这两个条件是没区别的,不过一定要写成 k/3.0才行