黑马程序员技术交流社区

标题: 皮球反弹的问题,求帮助 [打印本页]

作者: 追马    时间: 2014-7-10 18:41
标题: 皮球反弹的问题,求帮助
本帖最后由 追马 于 2014-7-11 08:50 编辑

球从100高处落下,每次反弹为原高度的一半,求第10次落地式,球一共经过了多少米,最后一次反弹多高。
int main(){
     double leng = 100;
     double leng2 =50;
    for(int n = 2;n < = 10;n++){
        leng = leng  + leng2;
        leng2 = leng2/2;
    }
      printf("%f\n",leng);
      printf("%f\n",leng2);
      return 0;
}
作者: 追马    时间: 2014-7-10 18:42
我算的结果跟答案不符合。
作者: fantacyleo    时间: 2014-7-10 19:27
  1. #include <stdio.h>
  2. int  main()
  3. {
  4.     double height = 100.0; // 反弹高度
  5.     double distance = 0.0; // 经过距离
  6.     int i;
  7.     for(i = 1; i <= 10; i++)
  8.     {
  9.         // 第1次落地距离为100米. n>1时,第n次落地距离为前次反弹高度的2倍
  10.         if(i == 1)
  11.             distance += height;
  12.         else
  13.             distance += height * 2;

  14.         height /= 2;
  15.     }
  16. }
复制代码


球第n次和第n+1次落地之间经过的距离是第n次落地后反弹距离的两倍,你的问题应该就在于没有考虑这个2倍。但我不确定的是题目中【最后一次】反弹高度是指哪一次?是指第10次落地后的反弹,还是第9次落地后的反弹?我这个程序算出来的是第10次落地后的反弹高度,如果要算第9次落地后的反弹高度,height出了循环后要乘以2
作者: 追马    时间: 2014-7-11 08:48
fantacyleo 发表于 2014-7-10 19:27
球第n次和第n+1次落地之间经过的距离是第n次落地后反弹距离的两倍,你的问题应该就在于没有考虑这个2倍。 ...

万分感谢,太谢谢了 。




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