题解 | 华为HJ38-m#求小球落地#
求小球落地5次后所经历的路程和第5次反弹的高度
https://www.nowcoder.com/practice/2f6f9339d151410583459847ecc98446
描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
数据范围:输入的小球初始高度满足≤n≤1000 ,且保证是一个整数
输入描述:
输入起始高度,int型
输出描述:
分别输出第5次落地时,共经过多少米以及第5次反弹多高。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
示例1
输入:
1
输出:
2.875 0.03125
#include <stdio.h>
//以下是Senky的代码:
void start()
{
double n;//小球的初始高度
while(~scanf("%lf",&n)){
double journey=0;//路程
for(int i=1; i<=5; i++){
journey+=n;//球落地的路程
n=n/2;//小球弹起的高度
journey+=n;//球弹起的路程
}
//因为是求第五次落地时的路程,算法中journey多算了一次弹起的路程故减去
printf("%lf\n",journey-n);
printf("%lf\n",n);
}
}
int main() {
start();
return 0;//编辑于2022/10/14
}
总结:
①算术题;
②当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;
华为-HJ 文章被收录于专栏
机试的题解