请教一道编程题!
一球从h米的高度自由落下,每次落地后又反跳回原高度的一半,再落下。求它在第n次落地时,共经过多少米,第n次反弹多高。关于输入
高度h(双精度浮点数),落地次数n(大于0整数)。
关于输出
输出它在第n次落地时,共经过的米数s 和第n次反弹的高度h。(精确到小数点后四位)
#include <stdio.h> void foo( double h, unsigned n ) { printf( "起始%g米,第%u此落地,经过米数:%.4f,反弹高度%.4f\n", h, n, (3-4.0/(1u<<n))*h, h/(1u<<n) ); } int main( void ) { foo( 64, 1 ); foo( 64, 2 ); foo( 64, 3 ); foo( 64, 4 ); foo( 64, 5 ); }
#include <stdio.h> int main(void) { double h; int n; double s = 0; int i = 0; printf("h = "); scanf("%lf",&h); printf("n = "); scanf("%d",&n); i = h; while(n--) { s += i; h = h / 2; i = 2 * h; printf("s = %lf, h = %lf\n", s, h); } return 0; }