Java循环练习题

1.有30人,可能包括男人、女人、小孩,他们在一饭店共消费50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,求男人、女人、小孩各多少人?

找循环练习的时候看到的一个题目,但是感觉输出的结果有几种没考虑到,而且也不想用嵌套for来实现,就用数学思维写了一下代码,下面是原博主写的代码。

public class How{
    public static void main(String[] args){
        int man, woman, kids;
        for(man=0; man<=10; man++){
            for(woman=0; woman<=15;woman++){
                kids = 30-man-woman;
                if(man*3+woman*2+kids*1 == 50)
                System.out.printf("男人:%d,女人:%d,小孩:%d\n", man, woman, kids);
            }
        }
    }
}

/* Java 1.6执行结果:*/

男人:3,女人:14,小孩:13
男人:4,女人:12,小孩:14
男人:5,女人:10,小孩:15
男人:6,女人:8,小孩:16
男人:7,女人:6,小孩:17
男人:8,女人:4,小孩:18
男人:9,女人:2,小孩:19
男人:10,女人:0,小孩:20

原文链接:https://blog.csdn.net/yujar/article/details/23664515
接下来是我写的👇

public class ex {
	
	public static void main(String[] args) {
        int man = 0;
		int woman = 0;
		int kids = 0;

		/*  据题意可得出以下两个等式
		 *  3*man+2*woman+kids=50;
		 *  man+woman+kids=30;
		 *   ↓↓ 可推算出
		 *  2*man+woman=20;
         *  所以当女人个数为0时,男人最多也不会超过十个
		 */

        //用while实现的代码
		while(man<=10){        //循环遍历男人在10以内所有可能出现的个数
			woman = 20-2*man;        //根据推算的公式进行换算
			kids = 30-man-woman;
			System.out.println("男人:"+man+"\t女人:"+woman+"\t小孩:"+kids);
			man++;
		}
        
        //用for实现的代码
        for(int man=0;man<=10;man++){
            woman = 20-2*man;        //根据推算的公式进行换算
			kids = 30-man-woman;
			System.out.println("男人:"+man+"\t女人:"+woman+"\t小孩:"+kids);
        }
    }
}

得到的结果为:

男人:0    女人:20    小孩:10
男人:1    女人:18    小孩:11
男人:2    女人:16    小孩:12
男人:3    女人:14    小孩:13
男人:4    女人:12    小孩:14
男人:5    女人:10    小孩:15
男人:6    女人:8    小孩:16
男人:7    女人:6    小孩:17
男人:8    女人:4    小孩:18
男人:9    女人:2    小孩:19
男人:10    女人:0    小孩:20

2.Java某数学竞赛中,参赛人数大约在380~450人之间,比赛结果,全体考生的总平均分为76分,男生的平均分为75分,女生的平均分为80.1分,求男女生各有多少人? 

public static void main(String[] args) {
		/*
		 * 男生平均分×男生人数+女生平均分×女生人数=总平均分×总人数
		 * 设男生人数为x,女生人数为y,据题意可知:
		 * 75*x+80.1*y=76*(x+y);
		 * 			↓↓
		 * 		   x=4.1y
		 * 所以男生的人数是女生的4.1倍
		 * 
		 * 因为总人数在380~450人之间
		 * 所以 380 <= x+y <= 450
		 */
		for(int x=1; x<=450; x++){
			for(int y=1; y<=x/4.1; y++){
				if ((75*x+80.1*y)/(x+y)==76 && (x+y)>=380 && (x+y)<=450){
					System.out.println("男生有"+x+"人,女生有"+y+"人");
				}
			}
		}

	}

得到结果:

男生有328人,女生有80人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值