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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于驭龙 中级黑马   /  2013-10-16 14:42  /  3662 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//小明的妈妈每天会给他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天这个答案怎么破~~~

22 个回复

倒序浏览
要是7天是按80元算
也是13天拿到100元
回复 使用道具 举报
  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: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();
复制代码

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
所以说瞎搞..12天 那20元也算的话 明显就是无语...
答案可以说12 可以说13...
反正每天花一半存一半是个陷井..怎么写都是错~~
回复 使用道具 举报
  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:48
7#
先存后花的结果,发现结果是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();
复制代码

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
haxyek 金牌黑马 2013-10-16 17:13:29
8#
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. }
复制代码
回复 使用道具 举报
我想说不是14天么?(因为题目说到:每天要花掉一半即10元)
第七天的时候是存到70,花掉一半是35,然后算上第14天的,才正好是105元。。。。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
7天的时候存70,7天过后是第八天的时候花存款的一半剩35+20=55 第九天开始算+10+10+10+20

第12天的时候就105。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
题目说的是每过7天,这个可能理解的有点问题,可能是第7天也可能说过完7天。

就是第7天的时候花费存款的一半,第七天30+20=50
第八天开始10+10+10+10+10 也够100。
主要看你怎么理解题意。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
nooooy 中级黑马 2013-10-16 23:19:25
12#
只能说题目出的不太严谨,并没有说清楚具体条件,才导致这么多答案。
不过我觉得用笔算也不能算出来12天的答案啊,做出来12天的就是没有认真读题。
题目中已经说了,每过7天就会花掉存款的一半,那你的20块钱是从哪来的。。
每过7天就是sum就是35(当然这里也有分歧,就是第七天的10块钱是否计入sum。如果计入sum就是35,如果不计就是40)
所以可能出现的答案就是13,14跟19。

以上是我的拙见。
回复 使用道具 举报
飞、 中级黑马 2013-10-17 00:15:28
13#
于驭龙 发表于 2013-10-16 15:17
所以说瞎搞..12天 那20元也算的话 明显就是无语...
答案可以说12 可以说13...
反正每天花一半存一半是个陷 ...

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

十二天是老师给的真实答案!~~~
回复 使用道具 举报
nooooy 中级黑马 2013-10-17 09:49:03
15#
于驭龙 发表于 2013-10-17 09:42
十二天是老师给的真实答案!~~~

好吧,我跪了{:3_55:}
回复 使用道具 举报
上代码
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

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
        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-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
回复 使用道具 举报
杨靖 发表于 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
回复 使用道具 举报
杨靖 发表于 2013-10-16 16:12
先存后花的结果,发现结果是14天。。。不知12天怎么来的

不错,这个算法简洁明了,给力,刚开始看还以为你写错了,恕鄙人目光愚昧。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马