注册 登录
编程论坛 C语言论坛

运用for循环

三中小学生 发布于 2022-03-11 15:32, 1712 次点击
一个球从100m高度自由落下,每次落地后返回原高度的一半,再落下,再反弹,求它第10次落地时,共经过多少米?
4 回复
#2
不会游泳的虾2022-03-11 16:05
供参考:
程序代码:
#include <stdio.h>
int main()
{
    int i;
    double sum = 100, init_high = 100;
    for (i = 0; i < 10; i++)
    {
        init_high /= 2;
        sum += init_high;
    }
    printf("共经过%.2lf米", sum);
    return 0;
}
#3
rjsp2022-03-11 16:28
第一次:-100 + 2*100
第二次:-100 + 2*100 + 2*50
第三次:-100 + 2*100 + 2*50 + 2*25
第四次:-100 + 2*100 + 2*50 + 2*25 + 2*12.5
…………
第十次:-100 + 2*100 + 2*50 + 2*25 + 2*12.5 + ………… + 2*(100/2^9)
等比数列求和 S(n) = 400*(1 - 1/2^n)-100

程序代码:
#include <stdio.h>

double foo( unsigned n )
{
    return 400*( 1 - 1.0/(1u<<n) )-100;
}

int main( void )
{   
    printf( "%.6f\n", foo(10) ); // 299.609375
}



[此贴子已经被作者于2022-3-11 16:39编辑过]

#4
m34404268982022-03-15 09:52
你是*亻子亻子吗?
#5
ttt8673047972022-03-23 22:48
回复 2楼 不会游泳的虾
你这个计算应该是错了 路程少了
1