正文

[038] 小球反弹2006-03-18 23:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wentao/11143.html

分享到:

<谭> 6.9

一球从100m高度自由落下,每次落地后反跳回原高度的一半再落下。求它在第10次落地时共经过多少m?  第10次反弹多高?

#include <stdio.h>
int   main()
{
    float an = 100 ;         /* 第一次落地前的高度 */
    float sn = an  ;         /* 第一次落地时总路程 */
    int i ;
    for ( i = 2; i <= 10; i++)
    {
        an = an / 2 ;
        sn = sn + an * 2 ;
    }
    printf("Sum=%fm\n",sn);
    printf("The tenth hight is: %fm\n",an / 2);
    return 0;
}

运行结果:
======================================
Sum=299.609375m
The tenth hight is: 0.097656m
======================================

如此设计时绕了个小弯儿, 即第10次落地时的an为第9次反弹的高度, 因此在输出时又一次减半为an/2, 验证如下:

#include <stdio.h>
int   main()
{
    float an = 100 ; 
    float sn = an  ;  
    int i ;
    for ( i = 2; i <= 10; i++)
    {
        an = an / 2 ;
        printf("i=%2d an=%f\n", i, an);
        sn = sn + an * 2 ;
        printf("     sn=%f\n", sn);
    }
    printf("\nSum=%fm\n",sn);
    printf("The tenth hight is: %fm\n",an / 2);
    return 0;
}

运行结果:
================================
i= 2 an=50.000000
     sn=200.000000
i= 3 an=25.000000
     sn=250.000000
i= 4 an=12.500000
     sn=275.000000
i= 5 an=6.250000
     sn=287.500000
i= 6 an=3.125000
     sn=293.750000
i= 7 an=1.562500
     sn=296.875000
i= 8 an=0.781250
     sn=298.437500
i= 9 an=0.390625
     sn=299.218750
i=10 an=0.195313
     sn=299.609375

Sum=299.609375m
The tenth hight is: 0.097656m
================================

若用书上的方法, 无此问题, 也就是将an各sn的操作换个顺序

#include <stdio.h>
int   main()
{
    float sn = 100  ;
    float an = sn / 2 ; 
    int i ;
    for ( i = 2; i <= 10; i++)
    {
        sn = sn + an * 2 ;
        printf("i=%2d sn=%f\n", i, sn); /* 验证用 */
        an = an / 2 ;
        printf("     an=%f\n", an);           /* 验证用 */
    }
    printf("\nSum=%fm\n",sn);
    printf("The tenth hight is: %fm\n",an);
    return 0;
}

运行结果:
=================================
i= 2 sn=200.000000                       说明: 第二次落地经过的路程
     an=25.000000                        说明: 第二次弹起的高度
i= 3 sn=250.000000
     an=12.500000
i= 4 sn=275.000000
     an=6.250000
i= 5 sn=287.500000
     an=3.125000
i= 6 sn=293.750000
     an=1.562500
i= 7 sn=296.875000
     an=0.781250
i= 8 sn=298.437500
     an=0.390625
i= 9 sn=299.218750
     an=0.195313
i=10 sn=299.609375
     an=0.097656

Sum=299.609375m
The tenth hight is: 0.097656m
=================================

阅读(3123) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册