墨鱼崽崽


私信TA

用户名:dotcpp0714187

访问量:185

签 名:

等  级
排  名 9979
经  验 1060
参赛次数 0
文章发表 7
年  龄 23
在职情况 待业
学  校
专  业

  自我简介:

解题思路:

第一步:输入变量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分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区