解题思路:

第一步:输入变量m,n,h和s,(m为初始高度,n为落地次数,h为第n次反弹高度,s为总路程)并输入数值分别为m,n赋值。

首先:初始高度为m,不进入循环内,将其赋值s。

其次:循环内部,从第一次落地,每次反弹高度为h=m/2^i,反弹后,小球会再下落h的高度,所以h要乘2。
注意事项:
(我个人感觉答案有问题,第n次下落后的反弹高度为h=m/2^n,该反弹高度是不会进入循环的,所以真正的s应该由三部分组成:m,循环内部每一次反弹高度的两倍,以及最后一次反弹高度h=m/2^n。我感觉这才是真正的s。但为了代码能过没办法,只能把第n次的反弹高度给去掉了)
参考代码:

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    double m,h,s=0;//m为初始高度,n为落地次数,h为第n次反弹高度,s为总路程
    scanf("%lf %d",&m,&n);
    s=m;//初始高度不会反弹,赋值给s
    for(int i=1;i<n;i++)
    {
        h=m/pow(2,i);
        s+=2*h;//因为反弹后的摔落高度为h,所以要乘2
    }
    printf("%.2lf %.2lf",m/pow(2,n),s);
    return 0;
}
点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论