这也是道难题,难到我了。。。另外的一道难题是:练习:15 。
原题:
在马克思手稿中有一道趣味的数学问题:一共有30个人,可能包括男人,女人和小孩。他们在一家饭馆吃饭共花了50先令,其中每个男人花了3先令,每个女人花2先令,每个小孩花1先令。请问:女人和男人,小孩分别是几个人,请编写一个程序来计算。
利用for循环实现
提示:
定义三个变量men , women 和 kids 分别表示男人数,女人数和小孩数,可以得到如下两个关系:
men+ women+kids = 30 ; 3*men+2*women+kids=50
男人数i的范围是0<=men<=10,利用循环实现.
思路:
- 使用嵌套for循环结构;
- 定义循环变量i(i<30)和j(j<30);
- 设定:men=i;在第二个for循环结构中定义:women=kids;
- 定义kids的值,具体公式为:kids=(30-men-women);
- 定义公式: 3*men+2*women+kids=50
- 使用if选择结构判断当总先令等于50时,输出相应公式
参考源代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /* * 思路:使用两层嵌套for循环 * 将i的值设为小于总人数30,并且将男人的数量与i相等 * 同理,j的值等于女人的数量。 * 用运算公式表达小孩的数量等于30减男人再减女人(注意括号的使用!) * 使用if判断总分数是否等于50,若等于50输出正确,否则输出错误! */ public class P142_4{ public static void main (String[]args){ int men,women,kids,money ;//变量一次是:男人,女人,小孩,花的先令之和 for ( int i = 1 ;i <30 ;i++ ){ //定义i的值小于总人数30 men = i ;//定义男人的数量等于i for ( int j = 1; j <30;j++){//定义j的值小于总人数30 women = j;//定义女人的数量等于j kids = (30- men - women ); //这步很重要!!!定义小孩的数量,注意括号的使用!! money = men*3 + women*2 +kids ;//计算花费的先令总数 if ( money == 50 ){//当花费的先令总数等于50时,输出正确的数值 System.out.println("****************"); System.out.println("男人的数量是:"+men+"\t女人的数量是:"+women+"\t小孩的数量是:"+kids); System.out.println("先令总额"+"3*"+men+"+2*"+women+"+"+kids+"=50"); System.out.println("总人数:"); System.out.println(men+women+kids); } } } System.out.println("程序结束!"); } } |