其他分享
首页 > 其他分享> > 小韦老师@神犇营-my0128-球弹跳的高度

小韦老师@神犇营-my0128-球弹跳的高度

作者:互联网

小韦老师@神犇营-my0128-球弹跳的高度

题目:

描述

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

输出包含两行,

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

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

输入

输入仅一行,为一个整数 h,表示球的初始高度。

输出

输出为 2 行。

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

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

输入样例1

20

输出样例1

59.9219
0.0195312

提示

输出时不需要对精度特殊控制,用 cout << ANSWER,或者 printf ( “%f” , ANSWER)即可。

思路:

破题:
这里要求的是第 10 次弹跳的高度,和一共经过的米数。
对于第一次下落而言,经过的米数就是初始的高度,而对于之后的弹跳而言,
每一次高度都经过了两次:弹起来和落下去。
整体思路:
第一次下落,走过的米数是初始的高度,弹起来高度为原来高度的一半,然
后下落,现在这个高度经过了两次:弹起来和落下去。
后面以此类推。
具体步骤:
1.定义一个 double 型的变量 h,用来存储开始的高度,并输入 h。
2.定义一个累加器 sum ,用来记录一共经过的米数,并初始化为 0。
3.做十次操作:

  1. 将弹起来的高度累加到累加器中。
  2. 除了第一次,将落下去的高度累加到累加器中。
  3. 高度减半
	for (int i = 0; i < 10; i++) {  // 做 10 次操作 
		sum += h;  // 将弹起来的高度累加到累加器中 
		// 除了第一次,将落下去的高度累加到累加器中
		// 这里的写法等同于 if(i != 0),因为 i 为 0 是第一次 
		if(i) sum += h;  
		h /= 2;  // 高度减半 
	} 

4.输出累加器和最后的高度。

完整代码:

#include <bits/stdc++.h>

using namespace std;

int main() {

	double h;  // 开始高度 
	cin >> h;
	double sum = 0;  // 累加器,用来记录一共经过的米数 
	for (int i = 0; i < 10; i++) {  // 做 10 次操作 
		sum += h;  // 将弹起来的高度累加到累加器中 
		// 除了第一次,将落下去的高度累加到累加器中
		// 这里的写法等同于 if(i != 0),因为 i 为 0 是第一次 
		if(i) sum += h;  
		h /= 2;  // 高度减半 
	}
	cout << sum << endl << h;

	return 0;
}

标签:10,my0128,累加器,小韦,sum,米数,高度,累加,神犇
来源: https://blog.csdn.net/qq_31790997/article/details/96339021