解题思路:
利用循环 来计算每次 下落后弹起的高度, 经历的路程 需要注意 ,我在这里分别用 两个distance = (float)(high/2) 来计算。
特别注意:
还有一个 我这个工作了 7 8 年的老鸟没有注意到的地方, 对于浮点型输出有如下总结:
浮点型默认 表示是 小数点后6位,所以题目中的 小数点后精度6位是能保证的,但是最后打印时末尾会有多余的0, 所以需要用"%g 来打印
%f : 默认小数点后6位 打印
%0.2f : 打印小数点后面2位
%g: 默认不补全 多余0 输出
#include <stdio.h>
int main(void) {
int nums = 5;
float high = 0.0;
scanf("%f", &high);
float distance = 0.0;
for(int i =1; i<= nums; i++) {
distance +=high;
high = (float)(high/2);
if(i != nums) distance +=high; // nums =5 时,不用加上反弹的高度
}
printf("%g\n", distance);
printf("%g\n", high);
return 0;
}