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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuchuang1992 中级黑马   /  2013-10-29 13:24  /  1716 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?
  1. public class Test{
  2.         public static void main(String args[]){
  3.                
  4.                 int sum = 0;
  5.                 int day = 1;
  6.                
  7.                 while(sum<=100){
  8.                         sum += 20;
  9.                        
  10.                         //星期日,花一半
  11.                         if(day%7==0)
  12.                                 sum = sum/2;
  13.                         else                               
  14.                                 //星期1-6,花一半
  15.                                 sum = sum/2;
  16.                         day++;
  17.                 }
  18.                
  19.                 System.out.println(day--);
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

15 个回复

倒序浏览
明显是理解问题,平时是花掉20块钱的一半,就是每天花10块钱
回复 使用道具 举报
星期一到星期六的钱不应该是sum=sum/2,sum=sum/2代表你把存的钱花一半,而不是平日花一半。所以说:平时里他每天只存10元,星期天存20元,最后在花去总得存钱数一半。
程序可以这样写
public class Test{
        public static void main(String args[]){
               
                int sum = 0;
                int day = 1;
                while(sum<=100){
                        sum += 10;//星期一到星期六存的钱
                        
                        if(day%7==0)
                                sum=sum+20;//星期天的钱数为20,没有花
                                sum = sum/2;
                        day++;
                }
               
                System.out.println("存入100的天数为: "+day);
        }
}
这是我的理解!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
你写的代码存在问题,题目的意思是周一到周六每天有20元,每天花掉10元,所以周一到周六每天能剩10元,而你的代码
  1. else                                

  2. 14.                                //星期1-6,花一半

  3. 15.                                sum = sum/2;
复制代码
代表的意思是花掉身上所有钱的一半
还有
  1. //星期日,花一半

  2. 11.                        if(day%7==0)

  3. 12.                                sum = sum/2;
复制代码
周末的时候也会有20元零用钱,周末所剩的钱应该是以前身上所有的钱加上今天的20元,然后在除以2 sum = (sum+20)/2;
正确代码应该是这样:
  1. 01.public class Test{

  2. 02.        public static void main(String args[]){

  3. 03.               

  4. 04.                int sum = 0;

  5. 05.                int day = 1;

  6. 06.               

  7. 07.                while(sum<=100){

  8. 08.                        sum += 20;

  9. 09.                        

  10. 10.                        //星期日,花一半

  11. 11.                        if(day%7==0)

  12. 12.                                sum = (sum+20)/2;

  13. 13.                        else                                

  14. 14.                                //星期1-6,花一半

  15. 15.                                sum = sum + 20/2;

  16. 16.                        day++;

  17. 17.                }

  18. 18.               

  19. 19.                System.out.println(day--);

  20. 20.        }

  21. 21.}
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
FFF 金牌黑马 2013-10-29 14:31:13
报纸
  1.                         
  2.                                //星期日,花一半     
  3.                                if(day%7==0)
  4.                                 sum = sum/2;
  5.                         else                                
  6.                                 //星期1-6,花一半
  7.                                 sum = sum/2;
  8.                         day++;
复制代码
你这样写是不是错了?星不星期天没有意义啊?都是Sun=Sun/2

修改后的代码如下:
  1. while(sum<=100){
  2.                         //sum += 20;
  3.                         
  4.                         //星期日,花一半
  5.                         if(day%7==0)
  6.                                 sum = (sum+20)/2;
  7.                         else                                
  8.                                 //星期1-6,花一半
  9.                                 sum = sum+20/2;
  10.                         day++;
  11.                   
  12.                 }
复制代码
可能存在理解不正确的地方!
回复 使用道具 举报
FFF 金牌黑马 2013-10-29 14:34:25
地板
李文帅 发表于 2013-10-29 14:12
你写的代码存在问题,题目的意思是周一到周六每天有20元,每天花掉10元,所以周一到周六每天能剩10元,而你 ...

你的是不是也存在错误?
每天都给40块了。
sun+=20
然后sun又在while里又sun=sun+20/2

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 活跃的紧哈~

查看全部评分

回复 使用道具 举报
/*
题目:
小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。
每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?

疑问:存够100元的时刻——是指最后那天拿到钱的时刻,还是花掉之后的时刻
如果是指花掉之后,程序如下:
*/
//demo.java
public class demo
{       
          public static void main(String[] args)
        {
                 int sum=0;
                 int day=1;
                 while (sum<=100)
                 {
                         //星期天
                        if (day%7==0)
                        {
                                sum=sum+20;//星期天先得20,再花掉总数的一半
                                sum=sum/2;
                        } else {
                                sum=sum+10;//周一到周六
                        }
                        //System.out.println("今是第 "+day+" 天");
                        //System.out.println("截止到本日钱的总数为——"+sum);
                        if (sum==100) break;//如果最后一天恰好为100,就跳出循环,否则会多循环一次
                        day++;
        }
                 System.out.println("存入100的所需的天数为: "+day);
        }
}  
回复 使用道具 举报
  1. /*
  2. 题目:
  3. 小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。
  4. 每到周日,小明拿到钱后会把所有零花钱花掉一半。
  5. 请编程计算,从周一开始,小明需要多少天才能存够100元?

  6. 疑问:存够100元的时刻——是指最后那天拿到钱的时刻,还是花掉之后的时刻
  7. 如果是指花掉之后,程序如下:
  8. */
  9. //demo.java
  10. public class demo
  11. {       
  12.           public static void main(String[] args)
  13.         {
  14.                  int sum=0;
  15.                  int day=1;
  16.                  while (sum<=100)
  17.                  {
  18.                          //星期天
  19.                         if (day%7==0)
  20.                         {
  21.                                 sum=sum+20;//星期天先得20,再花掉总数的一半
  22.                                 sum=sum/2;
  23.                         } else {
  24.                                 sum=sum+10;//周一到周六
  25.                         }
  26.                         //System.out.println("今是第 "+day+" 天");
  27.                         //System.out.println("截止到本日钱的总数为——"+sum);
  28.                         if (sum==100) break;//如果最后一天恰好为100,就跳出循环,否则会多循环一次
  29.                         day++;
  30.         }
  31.                  System.out.println("存入100的所需的天数为: "+day);
  32.         }
  33. }  
复制代码

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报
FFF 发表于 2013-10-29 14:34
你的是不是也存在错误?
每天都给40块了。
sun+=20

不好意思,我直接复制他的代码,只改了下面的代码,忘了把上面的代码去掉,马虎了....:lol
回复 使用道具 举报
纠正一下,上面的代码应该是下面的,刚才直接复制楼主的代码,只改了下面的代码,忘了把 'sum +=20;'这句代码给注释掉,抱歉
  1. 01.public class Test{

  2. 02.        public static void main(String args[]){

  3. 03.               

  4. 04.                int sum = 0;

  5. 05.                int day = 1;

  6. 06.               

  7. 07.                while(sum<=100){

  8. 08.                       // sum += 20;

  9. 09.                        

  10. 10.                        //星期日,花一半

  11. 11.                        if(day%7==0)

  12. 12.                                sum = (sum+20)/2;

  13. 13.                        else                                

  14. 14.                                //星期1-6,花一半

  15. 15.                                sum = sum + 20/2;

  16. 16.                        day++;

  17. 17.                }

  18. 18.               

  19. 19.                System.out.println(day--);

  20. 20.        }

  21. 21.}
复制代码
回复 使用道具 举报

谢谢,嘿嘿 ,我会了
回复 使用道具 举报
怎么看着好像是  day++呢
回复 使用道具 举报
To 金牌黑马 2013-10-30 00:07:28
13#
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
仇邓强 发表于 2013-10-30 00:07
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释 ...

苦逼的版主……
辛苦了……
回复 使用道具 举报
这样代码应该是错的,在星期1-6,花一半,不应那样写,要不都一样了,应该是sum=sum-10;因为他只是每天花掉了10块而已
回复 使用道具 举报
本帖最后由 李新辉 于 2013-10-30 17:15 编辑
  1. class DayNum
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         int sum=0;
  6.         int day=0;//存完钱才是天数day++  ===>  day=0+1,所以这里初始化为0
  7.         int M=20;
  8.         while(sum<100)//当小明存够100就跳出循环
  9.         {
  10.             if(day%7==0)
  11.                 sum=(sum+M)/2;//周日存入20元并花掉全部的一半
  12.             else
  13.                 sum+=M/2;//周一到周六存入10元
  14.             day++;
  15.             }
  16.                 System.out.println("当小明存够100元是第 "+day+" 天");
  17.         }
  18. }
复制代码
这是我按照楼主的要求写的代码
看楼主能否看明白……
大家多交流……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马