黑马程序员技术交流社区

标题: 求助阿...面试题怎么得出12天??? [打印本页]

作者: 于驭龙    时间: 2013-10-16 14:42
标题: 求助阿...面试题怎么得出12天???
//小明的妈妈每天会给他20元零花钱,小明每天花一半存一半,
        //每过7天小明又会把所有存款花掉一半,请编程计算小明需要多少天才能存够100元?
  1. int money=0;
  2.             int day=0;
  3.             for (money=0; money < 100;)
  4.             {
  5.                 money += 10;
  6.                 day++;
  7.                 if (day % 7 == 0)
  8.                 {
  9.                     money = money / 2;
  10.                 }
  11.             }
  12.             Console.WriteLine("小明第" + day + "天存了" + money + "元");
  13.             Console.ReadKey();
复制代码
算出来是19天..

还有13天不算消耗10元  是105元

求12天这个答案怎么破~~~
作者: 于驭龙    时间: 2013-10-16 14:48
要是7天是按80元算
也是13天拿到100元
作者: 于驭龙    时间: 2013-10-16 14:56
  1.   int money=0;
  2.             int day=0;
  3.             for (money=0; money < 100;)
  4.             {
  5.                 day++;
  6.               
  7.                
  8.                 if (day % 7 == 0)
  9.                 {

  10.                     money = (money + 20) / 2;
  11.                 }
  12.                 else
  13.                 {
  14.                     money += 10;
  15.                 }
  16.             }
  17.             Console.WriteLine("小明第" + day + "天存了" + money + "元");
  18.             Console.ReadKey();
复制代码

作者: 猫咪不吃糖    时间: 2013-10-16 15:08
本帖最后由 猫咪不吃糖 于 2013-10-16 15:10 编辑

把存10元放在后面,不过依然是13天。哦,我发现问题在哪了,题目12天是手上出现100元的时刻,连花掉的那10元也计入了。题目不太对吧。
  1.             int money = 0;
  2.             int day = 0;
  3.             for (money = 0; money < 100; )
  4.             {
  5.                 day++;
  6.                 if (day % 7 == 0)
  7.                 {
  8.                     money = money / 2;
  9.                 }
  10.                 money += 10;
  11.             }
  12.             Console.WriteLine("小明第" + day + "天存了" + money + "元");
  13.             Console.ReadKey();
复制代码

作者: 于驭龙    时间: 2013-10-16 15:17
所以说瞎搞..12天 那20元也算的话 明显就是无语...
答案可以说12 可以说13...
反正每天花一半存一半是个陷井..怎么写都是错~~
作者: 于驭龙    时间: 2013-10-16 15:22
  1. int money=0;
  2.             int day=0;
  3.             for (money=0; money < 100;)
  4.             {
  5.                 day++;
  6.                 if (money + 20 == 100)
  7.                 {
  8.                     money = money + 20;
  9.                     break;
  10.                 }
  11.                
  12.                 if (day % 7 == 0)
  13.                 {
  14.                   
  15.                     money = (money + 20) / 2;
  16.                 }
  17.                 else
  18.                 {
  19.                     money += 10;
  20.                 }
  21.             }
  22.             Console.WriteLine("小明第" + day + "天存了" + money + "元");
  23.             Console.ReadKey();
复制代码
把那20块算上就做出来了....伪命题阿~~~
作者: 杨靖    时间: 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的
  1. int money, i = 0;
  2.             for (money = 0; money < 100; money += 10)
  3.             {
  4.                 if (i % 7 == 0)
  5.                 {
  6.                     money /= 2;
  7.                     i++;
  8.                 }
  9.                 else
  10.                 {
  11.                     i++;
  12.                 }
  13.             }
  14.             Console.WriteLine(money + "元");
  15.             Console.WriteLine(i + "天");
  16.             Console.ReadKey();
复制代码

作者: haxyek    时间: 2013-10-16 17:13
12天
  1. namespace 小明
  2. {
  3.         class Program
  4.         {

  5.                 static void Main(string[] args)
  6.                 {
  7.                         int menoy = 0;
  8.                         int i = 1;
  9.                         for (; menoy < 100; i++)
  10.                         {
  11.                                 if (i % 7 == 0)
  12.                                 {
  13.                                         menoy = menoy + 20;
  14.                                         if (menoy >= 100)
  15.                                         { break; }
  16.                                         menoy = menoy / 2;
  17.                                         continue;
  18.                                 }
  19.                                 menoy = menoy + 20;
  20.                                 if (menoy >= 100)
  21.                                 { break; }
  22.                                 menoy = menoy - 10;
  23.                         }
  24.                         Console.WriteLine(menoy + " " + i);
  25.                         Console.ReadLine();
  26.                 }
  27.         }
  28. }
复制代码

作者: 念念念念_、    时间: 2013-10-16 17:22
我想说不是14天么?(因为题目说到:每天要花掉一半即10元)
第七天的时候是存到70,花掉一半是35,然后算上第14天的,才正好是105元。。。。
作者: aihuahuaxx    时间: 2013-10-16 20:09
7天的时候存70,7天过后是第八天的时候花存款的一半剩35+20=55 第九天开始算+10+10+10+20

第12天的时候就105。

作者: aihuahuaxx    时间: 2013-10-16 20:14
题目说的是每过7天,这个可能理解的有点问题,可能是第7天也可能说过完7天。

就是第7天的时候花费存款的一半,第七天30+20=50
第八天开始10+10+10+10+10 也够100。
主要看你怎么理解题意。
作者: nooooy    时间: 2013-10-16 23:19
只能说题目出的不太严谨,并没有说清楚具体条件,才导致这么多答案。
不过我觉得用笔算也不能算出来12天的答案啊,做出来12天的就是没有认真读题。
题目中已经说了,每过7天就会花掉存款的一半,那你的20块钱是从哪来的。。
每过7天就是sum就是35(当然这里也有分歧,就是第七天的10块钱是否计入sum。如果计入sum就是35,如果不计就是40)
所以可能出现的答案就是13,14跟19。

以上是我的拙见。
作者: 飞、    时间: 2013-10-17 00:15
于驭龙 发表于 2013-10-16 15:17
所以说瞎搞..12天 那20元也算的话 明显就是无语...
答案可以说12 可以说13...
反正每天花一半存一半是个陷 ...

但是题目的问题问的是要多少天才能存到100块呀
既然是存  那肯定就不能算花的呀
作者: 于驭龙    时间: 2013-10-17 09:42
nooooy 发表于 2013-10-16 23:19
只能说题目出的不太严谨,并没有说清楚具体条件,才导致这么多答案。
不过我觉得用笔算也不能算出来12天的 ...

十二天是老师给的真实答案!~~~
作者: nooooy    时间: 2013-10-17 09:49
于驭龙 发表于 2013-10-17 09:42
十二天是老师给的真实答案!~~~

好吧,我跪了{:3_55:}
作者: 自由の风    时间: 2013-10-17 11:31
上代码
static void Main(string[] args)
        {
            int day;
            int money = 0;
            for ( day = 1;money < 100; day++)
            {//首先判断是否是第七天,是的话进入条件
                if (day%7==0)
                {
                    money = money + 20;
                    if (money==100)
                    {
                        break;
                    }
                    money = money / 2;
                    //第七天完成后就直接第八天了,重走循环
                    continue;
                }
                //不是第七天的话就继续走普通条件
                money = money + 20;
                if (money == 100)
                {
                    break;
                }
                money = money - 10;
            }
            Console.WriteLine("{0}天,{1}元",day,money);
            Console.ReadKey();
我觉得这个题就是抠字眼,首先题中写到每天花10元,每七天花存款总数的一半,那么到第七天除了要花存款的一半,那10元还花不花?还是只花存款的一半第七天就结束了?从从语文上都能讲的通,再者就是题目的问题,什么时候存到100元,很抠字眼,先存后花,所以说是存到100元就结束了,不是人常理上的存完当天的20,再花掉10才结束。
这题语文上有误导嫌疑:L
作者: 追溯客    时间: 2013-10-17 12:33
        class Program
        {

                static void Main(string[] args)
                {
                        int menoy = 0;
                        int i = 1;
                        for (; menoy < 100; i++)
                        {
                                if (i % 7 == 0)
                                {
                                        menoy = menoy + 20;
                                        if (menoy >= 100)
                                        { break; }
                                        menoy = menoy / 2;
                                        continue;
                                }
                                menoy = menoy + 20;
                                if (menoy >= 100)
                                { break; }
                                menoy = menoy - 10;
                        }
                        Console.WriteLine(menoy + " " + i);
                        Console.ReadLine();
                }
        }
作者: 大虾挂了    时间: 2013-10-17 18:01
杨靖 发表于 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
作者: 大虾挂了    时间: 2013-10-17 18:02
杨靖 发表于 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
作者: 大虾挂了    时间: 2013-10-17 18:02
杨靖 发表于 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
作者: 大虾挂了    时间: 2013-10-17 18:03
haxyek 发表于 2013-10-16 17:13
12天

饿。。。。题目说是小明的存款超过100吧,刚拿到20块钱超过100就算了?我怎么觉得“存款”的意思应该是花销后剩下的才叫存款呢。。。。
作者: 蜗牛强    时间: 2013-10-19 23:57
本帖最后由 蜗牛强 于 2013-10-20 00:11 编辑

//小明的妈妈每天会给他20元零花钱,小明每天花一半存一半,
        //每过7天小明会把所有存款花掉一半,请编程计算小明需要多少天才能存够100元?
如果蓝色条件不能覆盖红色条件,为35(七天积蓄)+70(六天积蓄)=105>100 13天
如果蓝色条件能覆盖红色条件,为40(七天积蓄)+70(六天积蓄)=110>100 13天
注意是小明存够100元,存,不代表存进银行,在小明手中都是小明的存款,所以到达100元小明就算数。
至于为啥答案是12天,我是这么理解的,每过7天,也许是第八天才花,那么上面第二种情况会等于12


作者: 追溯客    时间: 2013-10-23 09:12
如问题被解决,请及时把分类设为"已解决",黑马有你更精彩!




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