一个球从100m高度自由落下……


【描述】

一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高。


【输出结果】

共经过:199.804688
第10次反弹高度:0.097656

#include<stdio.h>

int main() {
	double h = 100.0, length;
	int i;
	for (i = 1; i < 11; i++) {
		length = h + length;
		h = (1.0 / 2.0) * h;
	}
	printf("共经过:%f\n", length);
	printf("第10次反弹高度:%f", h);
	return 0;
}


一个100高度自由落下并反弹时,我们需要注意每一次弹跳的高度都会减半。我们可以编写一个简单的程序来计算总行程和第10次反弹的高度。假设每次下落和上升都算作一次“移动”,那么: 1. 第一次落地,行程是100; 2. 第二次落地,先上行50,再下行100,行程合计150; 3. ...以此类推。 第n次落地的总行程将是前(n-1)次行程加上当前的下落距离(如果n是奇数,就是100,如果是偶数,就只有50),因为最后一次弹跳不会再次上升。 对于第10次落地,由于它是偶数,所以行程将由最后一次的下落(50)构成。我们用循环来计算这个过程: - 总行程(total_distance)初始化为0; - 反弹高度(bounce_height)初始化为100(首次下落); - 循环次数设为9,因为我们已经考虑了第一次落地,到第10次正好是10次循环。 在每次循环中,我们将总行程加上当前的下落距离,并更新反弹高度为原来的一半。循环结束后,总行程即为第10次落地前的总行程,而最后一次的反弹高度则可以直接获取。 下面是Python代码示例: ```python height = 100 # 初始高度 distance_so_far = 0 # 总行程 bounce_height = height # 当前反弹高度 for i in range(9): # 从第二次下落到第十次下落 distance_so_far += bounce_height # 加入这一下的行程 bounce_height /= 2 # 更新反弹高度 # 最后一次的下落不需要再加入到行程里,直接输出反弹高度 print(f"第10次落地时,总共经过 {distance_so_far} .") print(f"第10次反弹的高度是 {bounce_height:.2f} .")
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值