1085:球弹跳高度的计算

【题目描述】
一球从某一高度h落下(单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?

输出包含两行,第1行:到球第10次落地时,一共经过的米数。第2行:第10次弹跳的高度。

【输入】
输入一个整数h,表示球的初始高度。

【输出】
第1行:到球第10次落地时,一共经过的米数。

第2行:第10次弹跳的高度。

注意:结果可能是实数,结果用double类型保存。

提示:输出时不需要对精度特殊控制,用cout << ANSWER,或者printf("%g",ANSWER)即可。

【输入样例】
20
【输出样例】
59.9219
0.0195312
题目分析:
本题可以根据球的运动顺序去写程序,先从高度为h的地方落下,这个时候记录落下高度,然后再去计算弹起高度,为原来的一半,h = h/2,然后再去记录弹起高度。
这是一次落下+弹起的记录,总共循环10次,这时我们就记录了10次落弹的总距离,最后一次h表示最后弹起的距离,我们用总距离-h,则可以获得我们需要的结果。

#include<iostream>
#include<cstdio>
using namespace std;
int main() {
	double h,s=0;
	cin>>h;
	int a=0;
	while(a<10){
		a++;
		s+=h;//记录落下高度
		h=h/2;
		s+=h;//记录弹起高度 
	}
	cout<<s-h<<"\n"<<h;
	return 0;
}
posted @ 2021-12-05 10:13  MacToT  阅读(2130)  评论(0编辑  收藏  举报