黑马程序员技术交流社区
标题:
有嘿嘿,想到了一个好的编程题,拿出来考考大家。
[打印本页]
作者:
付玉光
时间:
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