A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 付玉光 于 2013-3-11 21:01 编辑

:)你和19个朋友出去玩,后来你想请他们每人喝一瓶矿泉水,每瓶一元,但你只有10元,

不过你看到超市墙外写着一个矿泉水瓶可换5角.

问:

①你能否请他们每人喝一瓶矿泉水吗?

②如果你有100元,每人喝一瓶的话,你能请几个人?

③请你用编程的思想来思考,并且用程序代码来实现,要有必要的注释!!

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1 不错,有利于互动。

查看全部评分

5 个回复

倒序浏览

回帖奖励 +6

本帖最后由 杨玉辉 于 2013-3-11 20:35 编辑

循环 %2 运算 输出 瓶数

你够狠 玩递归呀
class Test{

   public static void main(String[] args) {

     int count=10; //定义count 为现有钱数

    System.out.println("sum="+(sum(count)-1)); //运算到num=2 时 多算了一次

    }
  public static int sum(int num){
             if(num == 1) //当num=1时,循环结束
                     return 0;
             else if(num%2==1)
                     return num+sum(num/2+1);  //调用递归方法
            else
                     return num+sum(num/2);
     }
            
}
  将count =100 放进去就可以算出来
回复 使用道具 举报
/**
  * 每人喝一瓶,要用掉0.5元,
  * 如何不够一元就不能喝了。
  */

public static void main(String[] args) {
  double money=100;
  int man=0;
  while(money>1){
   man++;
   money=money-0.5;
  }
    System.out.println(man);
   }

评分

参与人数 2技术分 +1 黑马币 +9 收起 理由
付玉光 + 9 很给力!
猫腻 + 1 参与就好。

查看全部评分

回复 使用道具 举报
            占楼~
回复 使用道具 举报
有意思。嘿嘿。
回复 使用道具 举报
本帖最后由 薛飞 于 2013-3-11 20:13 编辑

10元可以请19人,100元可以请199人,(int)(金额*2-1)=所请的人数。无论多少钱都会剩0.5元。
class FunctionDemo2
{
        public static void main(String[] args)
        {
                double money1=10,money2=100;
                Function1(money1);
                Function2(money2);
        }
        //实现方法一:每喝一瓶,钱数减0.5元,只有大于一元时才能循环。
        public static void Function1(double m)
        {
                System.out.print(m+"元,刚好能请");
                int count=0;
                while(m>=1)
                {
                        m-=0.5;
                        count++;
                }
                System.out.println(count+"个人喝水,还剩"+m+"元");
        }
        //实现方法二:根据规律可知,(int)(钱数*2-1)即为所请的人数,最后永远剩0.5元。
        public static void Function2(double m)
        {
                int count;
                count=(int)(m*2-1);
                System.out.println(m+"元,刚好能请"+count+"个人喝水,还剩0.5元");
        }
}

评分

参与人数 2技术分 +1 黑马币 +21 收起 理由
付玉光 + 21 哈哈,果然是高手,规律被你找到后,这自然.
猫腻 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马