百鸡百钱:实现一百块买一百只鸡,公鸡1只5块钱,母鸡1只3块钱,小鸡3只一块钱
public class HomeWork080502 {
public static void main(String[] args) {
/* 百鸡百钱:实现一百块买一百只鸡,公鸡1只5块钱,母鸡1只3块钱,小鸡3只一块钱
提示:使用for循环嵌套
成立的条件:价格总额为100.并且数目总数为100
分析:100块钱能最多能买20只公鸡
100块钱能最多能买33只母鸡
100块钱能最多能买100只小鸡*/
int gon = 0;// 公鸡数目
int mu = 0;// 母鸡数目
int xiao = 0;// 小鸡数目
// 定义总金额
double money = 0;
// 因为100块钱能最多能买20只公鸡
for (gon = 0; gon <= 20; gon++) {
// 100块钱能最多能买33只母鸡
for (mu = 0; mu <= 33; mu++) {
// 小鸡的数量可以用100只减去公鸡和母鸡的数量得出
xiao = 100 - gon - mu;
money = 5 * gon + 3 * mu + xiao / 3.0;
// 因为价格要求总额为100,使用把遍历的数进行判断
if (money == 100) {
System.out.print("公鸡数目:" + gon);
System.out.print("\t母鸡数目:" + mu);
System.out.println("\t小鸡数目:" + xiao);
}
}
}
}
}
小鸡的数量可以用100只减去公鸡和母鸡的数量得出(这个方法不够严谨,因为小鸡的数量是一块钱3只,不会出现只买一只小鸡的情况)
xiao = 100 - gon - mu;
所以代码可以换成
public static void main(String[] args) {
//遍历公鸡的可能性
for(int g=0;g<=20;g++) {
//遍历母鸡的可能性
for(int m=0;m<=33;m++) {
//遍历小鸡的可能性 注意小鸡是3只一块钱
for(int x=0;x<=100;x=x+3) {
//判断当前的情况是否满足条件
//总价
int price = g*5+m*3+x/3;
//总数
int num = g+m+x;
//判断 百鸡百钱
if(price==100&&num==100) {
System.out.printf("公鸡个数为:%d 母鸡个数为:%d 小鸡个数为:%d \n",g,m,x);
}
}
}
}
效果图: