一、题目:
描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
最后的误差判断是小数点6位
输入描述:
输入起始高度,int型
输出描述:
分别输出第5次落地时,共经过多少米第5次反弹多高
二、输入输出示例:
三、思路:
需要注意,总路程的求法,第一次下路的时候只走了依次高度,因为弹起来的高度减半了,然后在下落弹起来的高度,以此类推,所以总路程就是1个初始高度+2个第二次高度+2个第三次高度+...+2个第n次高度。
这道题的小数点位数描述的也不是很清楚,程序通过的结果判断,这道题对结果的要求应该就是输出得结果的有效数字是6位,并且末尾有0不输出,所以起始可以直接用double型运算就行了,因为double型默认就是6位,如果想要了解怎么设定小数点位数且输出末尾0的话,可以去了解一下setprecision()函数和setiosflags()函数。
四、代码:
#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
int H;
double sum = 0;
double res;
double h;
cin>>H;
h = H;
int count = 0;
while(count != 5)
{
if(count == 0)
{
sum += h;
}
else
{
sum += 2 * h;
}
h /= 2;
count++;
}
cout<<sum<<endl;
cout<<h<<endl;
system("pause");
return 0;
}