黑马程序员技术交流社区

标题: 有嘿嘿,想到了一个好的编程题,拿出来考考大家。 [打印本页]

作者: 付玉光    时间: 2013-3-11 16:43
标题: 有嘿嘿,想到了一个好的编程题,拿出来考考大家。
本帖最后由 付玉光 于 2013-3-11 21:01 编辑

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

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

问:

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

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

③请你用编程的思想来思考,并且用程序代码来实现,要有必要的注释!!
作者: 杨玉辉    时间: 2013-3-11 17:12
本帖最后由 杨玉辉 于 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 放进去就可以算出来

作者: 王智威    时间: 2013-3-11 17:33
/**
  * 每人喝一瓶,要用掉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);
   }


作者: 徐鸿燕    时间: 2013-3-11 17:34
            占楼~
作者: 张文    时间: 2013-3-11 18:16
有意思。嘿嘿。
作者: 薛飞    时间: 2013-3-11 20:06
本帖最后由 薛飞 于 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元");
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2