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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追马 中级黑马   /  2014-7-10 18:41  /  1075 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 追马 于 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;
}

3 个回复

倒序浏览
我算的结果跟答案不符合。
回复 使用道具 举报
  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
回复 使用道具 举报
fantacyleo 发表于 2014-7-10 19:27
球第n次和第n+1次落地之间经过的距离是第n次落地后反弹距离的两倍,你的问题应该就在于没有考虑这个2倍。 ...

万分感谢,太谢谢了 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马