【題目描述】
一球從某一高度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;
}