楠木青花 发表于 2016-11-23 00:07:06

新人求解 c语言题 球从M米自由下落



题目描述 description

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

输入 input

M N

输出 output

它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行

样例输入 sample input
1000 5

样例输出 sample output
31.25 2875.00

OJ系统说我答案错误
#include <stdio.h>
int main()
{
        int n,i;
        float m,s=0;
        while(scanf("%f%d",&m,&n)!=EOF)
        {
                for(i=1,s=m;i<=n;i++)
                {
                        m=m/2;
                        s=s+2*m;
                }
                printf("%.2f %.2f",m,s-2*m);
        }
        return 0;
}

倾天 发表于 2016-11-23 11:01:24

改成这样:#include <stdio.h>

int main()
{
    float m, s;
    int n;
    scanf("%f%d", &m, &n);
    s = m;
    for(; n > 0; n--){
      m /= 2;
      s += m;
    }
    printf("%.2f %.2f", m, s);
    return 0;
}

楠木青花 发表于 2016-11-23 12:39:14

倾天 发表于 2016-11-23 11:01
改成这样:

这个也不对

DarkSE 发表于 2016-11-23 14:07:57

#include <stdio.h>

int main()
{
    float m, s;
    int n;
    scanf("%f%d", &m, &n);
    s = m;
    for(; n > 0; n--){
      m /= 2;
      s += m;
    }
    printf("%.2f %.2f", m, s-m);
    return 0;
}
纯copy楼上代码,未经测试……楼主自己运行看看{:5_109:}

倾天 发表于 2016-11-23 14:40:10

楠木青花 发表于 2016-11-23 12:39
这个也不对

那答案是什么?

倾天 发表于 2016-11-23 14:44:01

楠木青花 发表于 2016-11-23 12:39
这个也不对

讲道理答案是没错的,不信你可以输入1000 1看看,程序的输出你自己都可以算出来是对的

DarkSE 发表于 2016-11-23 18:39:23

倾天 发表于 2016-11-23 14:44
讲道理答案是没错的,不信你可以输入1000 1看看,程序的输出你自己都可以算出来是对的

答案没错,是他们理解的思路有问题导致代码计算结果不对

stalinwang 发表于 2016-11-24 09:59:23

题目中有提到对MN的大小约束吗?

楠木青花 发表于 2016-11-24 11:15:02

stalinwang 发表于 2016-11-24 09:59
题目中有提到对MN的大小约束吗?

没说有约束
这道题提交了五百多次 才对了六十几次{:10_266:}

DarkSE 发表于 2016-11-24 13:09:20

楠木青花 发表于 2016-11-24 11:15
没说有约束
这道题提交了五百多次 才对了六十几次

我那个对吗{:5_103:}

楠木青花 发表于 2016-11-25 10:13:06

不对

四十二 发表于 2016-11-26 03:12:01

.............
页: [1]
查看完整版本: 新人求解 c语言题 球从M米自由下落