黑马程序员技术交流社区
标题:
皮球反弹的问题,求帮助
[打印本页]
作者:
追马
时间:
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
#include <stdio.h>
int main()
{
double height = 100.0; // 反弹高度
double distance = 0.0; // 经过距离
int i;
for(i = 1; i <= 10; i++)
{
// 第1次落地距离为100米. n>1时,第n次落地距离为前次反弹高度的2倍
if(i == 1)
distance += height;
else
distance += height * 2;
height /= 2;
}
}
复制代码
球第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