练习:22

这也是道难题,难到我了。。。另外的一道难题是:练习:15 。

原题:

在马克思手稿中有一道趣味的数学问题:一共有30个人,可能包括男人,女人和小孩。他们在一家饭馆吃饭共花了50先令,其中每个男人花了3先令,每个女人花2先令,每个小孩花1先令。请问:女人和男人,小孩分别是几个人,请编写一个程序来计算。

利用for循环实现

提示:

定义三个变量men , women 和 kids 分别表示男人数,女人数和小孩数,可以得到如下两个关系:

men+ women+kids = 30 ; 3*men+2*women+kids=50

男人数i的范围是0<=men<=10,利用循环实现.

思路:

  1. 使用嵌套for循环结构;
  2. 定义循环变量i(i<30)和j(j<30);
  3. 设定:men=i;在第二个for循环结构中定义:women=kids;
  4. 定义kids的值,具体公式为:kids=(30-men-women);
  5. 定义公式: 3*men+2*women+kids=50
  6. 使用if选择结构判断当总先令等于50时,输出相应公式

参考源代码如下:

/*
* 思路:使用两层嵌套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("程序结束!"); } }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据