首页 > 试题广场 >

一个球从100m高度自由落下,每次落地后反跳回原高度的一半,

[问答题]

一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。

求它在第10次落地时,共经过多少米,第10次反弹多高。

推荐

#include<stdio.h>

int main()

{

double sn=100,hn=sn/2;

int n;

for(n=2;n<=10;n++)

{

sn=sn+2*hn;                       /*第n次落地时共经过的米数*/

hn=hn/2;                           /*第n次反跳高度*/

}

printf("第10次落地时共经过%f米\n",sn);

printf("第10次反弹%f米\n",hn);

return 0;

}


发表于 2018-03-25 10:57:15 回复(0)
a = float(input("请输入高度:"))
list = [a]
sum = 0
for i in range(10):
    x = list[i] / 2
    list.append(x)
for j in list[0:-1]:
    sum += j * 2
print(list)
print("共经过%f米!" % (sum - a))
print("第十次反弹%f米!" % list[-1])

# 下面这样写测试正确性为0
list = [100]
sum = 0
for i in range(10):
    x = list[i] / 2
    list.append(x)
for j in list[0:-1]:
    sum += j * 2
print(list)
print("共经过%f米!" % (sum - a))
print("第十次反弹%f米!" % list[-1])

是我一根筋还是题目引导出错。为何写死高度,搞的写出来的代码通过不了用例

发表于 2023-08-03 23:51:00 回复(0)
#include <stdio.h>

int main() {
    //一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。
    //求它在第10次落地时,共经过多少米,第10次反弹多高。
    double ball;
    double sum;
    ball = 100;
    for(int i = 1;i<=10;i++){
        sum = sum + ball + (ball/2);
        ball/=2;
    }
    printf("一共经历过%.2lf米\n",sum);
    printf("第10次反弹的高度是%.2lf米\n",ball);
    return 0;
}

发表于 2022-10-03 16:49:11 回复(0)
#include<stdio.h>
int main(){
	float h=100,sum=0;
	for(int i=0;i<10;i++){
		sum=sum+h+h/2;
		h=h/2;
	}
	//一次落地可分为下落h米和回弹h/2两个过程;“第10次落地时”理解为第10次落地仅进行了下落这一过程,
	//因此要减去回弹高度h/2,由于此时算法循环中已经执行 h=h/2; 故sum减去h便可 
	printf("第10次落地时共经过:%.2f米,第10次反弹高度为:%.2f米",sum-h,h);
	return 0;
}

发表于 2021-01-16 14:30:27 回复(0)
#include <stdio.h>
int main(){
 double height = 100;
 double cnt = 0;
 for(int i = 0; i < 10; i ++){
  if(i == 0)
   cnt += height;
  else{
   height /= 2;
   cnt += 2 * height;
  }
  printf("%lf ", cnt);
 }
}
发表于 2019-12-23 21:31:38 回复(0)