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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滔哥   /  2012-7-21 00:16  /  11395 人查看  /  196 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘俊佳 于 2012-7-21 21:44 编辑

定义一个总高度x,x=100;定义一个球回弹所经过的距离的变量y,球回弹的次数z
用一个for循环for(z=2;z<10;z++),第z次落地时共经过的米数:x=x+2*y;第z次的回弹
高度为y=y/2;设计代码如下:

WOZ_R8LNWM)X0JPXF@BHAG7.jpg (104.26 KB, 下载次数: 33)

WOZ_R8LNWM)X0JPXF@BHAG7.jpg

N{GR0KY{~4AL4$ZUYEALZ71.jpg (36.03 KB, 下载次数: 37)

打印结果

打印结果

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
  1. /*
  2. 需求:一个球从100米高空落下,每次调回原来一半高度,求到第10次共经过多少米?第10次反弹多高?

  3. 思路+步骤:1,开始值i=100;条件:i>0;操作:i=i/2,
  4. 2,double sum = i+1/2*i ;int count++ ;
  5. 3,if(count == 10) s.o.p sum;s.o.p i/2;

  6. */

  7. public class Ball3
  8. {
  9.       public static void main(String[] args)
  10.       {
  11.                 high();                              //调用方法

  12.        }

  13.        public static void high()
  14.       {
  15.              double sum = 0;
  16.               int count = 0;                              //记录下落次数
  17.              for(double i = 100; i>0; i /=2)
  18.              {
  19.                     sum += i+i*1/2;                    //因为每次下落球都经过了本次下落“i”和反弹“i/2”的路程
  20.                      count++;
  21.                      if(count == 10)
  22.                       {
  23.                               System.out.println("球在第10次落地时共经历:"+sum+" 米。");
  24.                               System.out.println("第10次反弹:"+(i/2)+" 米。");
  25.                               break;
  26.                        }

  27.               }

  28.         }
  29. }<IMG border=0 alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=4759&size=300x300&key=be559ee3f23dcc9c4110875ff353c15e&nocache=yes&type=fixnone" aid="attachimg_4759">
复制代码

结果.png (2.61 KB, 下载次数: 32)

结果.png

评分

参与人数 1技术分 +2 收起 理由
蒋映辉 + 2 多算了第十次以后弹起的距离

查看全部评分

回复 使用道具 举报
本帖最后由 彭超华 于 2012-7-21 21:10 编辑

今天晚上才看到题目,不知道现在做还迟不迟?
package mypackge;
public class Ziyouclass {
/*
  * 题目:一球从100米高空落下,每次落地后反弹高度是原来的一半,第10次落地后经过多少米,反弹的高度是多少?分析思路:
  * 需求:小球经过的路程(sum)小球第10次反弹的高度(h)
  * 可以通过for来实现小球反弹的次数控制,定义一个变量sum来记录小球经过的路程,定义一个初始高度m,每循环一次,m为原来的m/2,
  */
public static void main(String[] args) {
  getCourse(100, 10);
}
public static void getCourse(double h, int n) {
  double sum = h; // 小球第一次落地的路程
  for (int i = 0; i < n; i++) {
   h = h / 2;
   sum = sum + (h * 2); // h*2为小球每次反弹后到最高点再到落地的路程
   System.out.println("第" + (i + 1) + "次落地后经过:" + sum + "米."
     + "反弹高度为:" + h + "米");
  }
}
}

评分

参与人数 1技术分 +2 收起 理由
蒋映辉 + 2 多算了一个第十次以后弹起的距离....

查看全部评分

回复 使用道具 举报
看看 题目先
回复 使用道具 举报
周坤 发表于 2012-7-21 10:23
结果:
0.09765625
299.609375

什么意思?第十次弹起的距离?不就是那个0.09765625
回复 使用道具 举报
好像现在还没有关闭?试试
回复 使用道具 举报
看下题目先
回复 使用道具 举报
看看题,看看题,看看题。
回复 使用道具 举报
package cn.itcast.bank;

public class high {
        public static void main(String args[]){
                sayInfo(10);
        }
        public static void sayInfo(int times){                                //传入的参数为蹦多少次
                float high = 100;                        //初始化起始高度,每次减半,所以定义为浮点型。也可以通过参数的形式设定,此处从简。
                float distance = 0;                       
                /*依次输出每次掉落地后弹起的最高高度,和落地时经过的总路程
                 * 如i=1即第一次时,输出第一次落地时经过的总路程和弹起的最高高度*/
                for(int i=1;i<=times;i++){                                               
                        distance +=  high + high/2 ;                        //此为第i次落地后到最高点所进过的路程
                        high = high/2;                                                        //高度减半,弹起后高度
                        System.out.println("第"+i+"次落地后经过的总路程为:" + (distance-high));                        //因为是要输出到地后经过的总路程,所以减去弹起高度
                        System.out.println("第"+i+"次落地后弹起的最高高度为:"+high);
                }
        }
}
输出结果:
第1次落地后经过的总路程为:100.0
第1次落地后弹起的最好高度为:50.0
第2次落地后经过的总路程为:200.0
第2次落地后弹起的最好高度为:25.0
第3次落地后经过的总路程为:250.0
第3次落地后弹起的最好高度为:12.5
第4次落地后经过的总路程为:275.0
第4次落地后弹起的最好高度为:6.25
第5次落地后经过的总路程为:287.5
第5次落地后弹起的最好高度为:3.125
第6次落地后经过的总路程为:293.75
第6次落地后弹起的最好高度为:1.5625
第7次落地后经过的总路程为:296.875
第7次落地后弹起的最好高度为:0.78125
第8次落地后经过的总路程为:298.4375
第8次落地后弹起的最好高度为:0.390625
第9次落地后经过的总路程为:299.21875
第9次落地后弹起的最好高度为:0.1953125
第10次落地后经过的总路程为:299.60938
第10次落地后弹起的最好高度为:0.09765625

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
class TestBall
{
        public static void main(String[] args)
        {
                float sum =100;  //累计球经过的距离
                float a = 100;   //记录球反跳的高度
                int count = 0;
               
                for (int i=1; i<10; i++) //第10次落地时走过的距离
                {
                        a=a/2;     //球落地后反跳的高度
                        sum+=a*2;  //累加球上升并落下的距离
                }
                a=a/2;        //第10次反弹的距离
                System.out.println("第10次落地时,共经过:"+sum+"米");
                System.out.println("第10次反弹的高度为:"+a+"米");
       
        }
}

/*
结果:
D:\JAVA>javac TestBall.java

D:\JAVA>java TestBall
第10次落地时,共经过:299.60938米
第10次反弹的高度为:0.09765625米
*/

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报

评分

参与人数 1技术分 +2 收起 理由
蒋映辉 + 2 你把第十次弹起以后的距离算进去了....

查看全部评分

回复 使用道具 举报
本帖最后由 黑马振鹏 于 2012-7-21 23:25 编辑

没有用到递归思想,自己考虑还是这种最简单
第1次反弹高度: 50.0
第1总距离: 200.0
第2次反弹高度: 25.0
第2总距离: 250.0
第3次反弹高度: 12.5
第3总距离: 275.0
第4次反弹高度: 6.25
第4总距离: 287.5
第5次反弹高度: 3.125
第5总距离: 293.75
第6次反弹高度: 1.5625
第6总距离: 296.875
第7次反弹高度: 0.78125
第7总距离: 298.4375
第8次反弹高度: 0.390625
第8总距离: 299.21875
第9次反弹高度: 0.1953125
第9总距离: 299.609375
第10次反弹高度: 0.09765625
第10总距离: 299.8046875

小球算法.jpg (71.2 KB, 下载次数: 31)

小球算法.jpg

评分

参与人数 1技术分 +2 收起 理由
蒋映辉 + 2 多算了一组上下的过程...

查看全部评分

回复 使用道具 举报
/*
        需求:求一自由落下小球,第10次落地时,共经过多少米,第10次反弹多高
        已知:小球从100米地方落下,每次落地后反跳回原高度的一半,再落下
        定义初始高度"gao"为100
        定义初始总路程“sum”为100
*/



class PaoQiu5
{
        public static void main(String[] args)
        {
                double gao=100;//因为每次反弹的高度为前一次的一半,有可能是小数,用double定义
                                                //定义初始高度为100米
                double sum=100;//小球第一次自由落体,经过的路程与高度一样。
                                                //落地后开始反弹,以后每次经过的路程为反弹高度的两倍
                        for(double x=1;x<=10;x++)
                        {
               
                System.out.println("第"+x+"次落地时经过的路程="+sum);//小球第x次经过的路程
                 gao=gao/2;
                System.out.println("第"+x+"次落地时反弹的高度="+gao);//小球第x次反弹的高度
                sum+=gao*2;
                        }
        }
}



第10次落地时经过的路程=299.609375

第10次落地时反弹的高度=0.09765625
file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/2531988876/QQ/WinTemp/RichOle/53G7IAC@11{5PHNR}CT`JS3.jpg
[img]file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/2531988876/QQ/WinTemp/RichOle/VPOGUN}4SQ~~WHQ5M{8I@YJ.jpg[/img]

无标题1.png (838.87 KB, 下载次数: 32)

无标题1.png

无标题.png (156.48 KB, 下载次数: 36)

无标题.png

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
先看看、、、、、
回复 使用道具 举报
尽量试试看吧。
回复 使用道具 举报
public class BallHightDemo
{

           public static void sop(Object obj)
      {
              System.out.println(obj);
      }

      public static void getHight()
      {
              double hight = 100;//定义球的当前高度
              double step = 2;//球跌落后的高度每次减半
              double sum = 0;//记录总高度的变量
              double shoot = 0;//记录最后一次跌落后弹起的高度的值

              for(int n = 1; n <= 10; n++)
              {
                       if(n== 1)
                           sum = hight;//第一次落地时
                       else
                       {
                           hight /= step;//下一次跌落前的最高高度
                           sum += hight * 2;
                       }

                      sop("第" + n + "次落地,落地时当前总高度为:" + sum);
              }
              shoot = hight;//最后一次跌落后弹起的高度

              sop("第10次落下的时候,一共经过了:" + sum+ "米");
              sop("第10次落下后,反弹了:" + shoot + "米");
      }
           public static void main(String[] args)
      {
              getHight();
      }   
}

呵呵,不知道这样对不对啊!{:soso_e100:}





搜狗截图_2012-07-21_23-41-57.png (12.87 KB, 下载次数: 35)

搜狗截图_2012-07-21_23-41-57.png

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
答案公布

public class Test {
         public static void main(String[] args)
         {
                 double s=100;
                 double t=100;
                 for(int i=1;i<10;i++)
                 {
                  s=s+t;
                 t=t/2;
                
                 }
               
                 System.out.println(s);
                 System.out.println(t);
                 
                 //299.609375这个是标准答案
                 //299.8046875这个多算了第十次碰撞以后的那一段
                 //299.70703125  这个是多加了十次碰撞以后往上的那一段
                 
         }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马