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人