被自己笑死了
  • 板块灌水区
  • 楼主WuXingRui212
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/9/30 15:18
  • 上次更新2024/9/30 16:03:07
查看原帖
被自己笑死了
1458403
WuXingRui212楼主2024/9/30 15:18

题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离s 米的地方,她需要游多少步呢。请你编程解决这个问题。

输入格式 输入一个实数 s s(单位:米),表示要游的目标距离。

输出一个整数,表示小玉一共需要游多少步。


看到这题时,我以为很简单(确实很简单),用C++的做了一下,发现时间长了一点,1.2秒,于是换成了C语言。 但我一直在用C++,C忘了一点点。 第一次输入的代码:

#include<stdio.h>
int main()
{
    int a=0;
    double v=2.0,sum=0,s;
    scanf("%f",s);
    while(1)
    {
        sum=sum+v;
        v=v*0.98;
        a++;
        if(sum>=s)
        {
            break;
        }
    }
    printf("%d",a);
	return 0; 
}

提交后全是wa,我重新看了一下,一点问题没有(才怪),于是我在dev-C++里输了一次,当我输入数后什么也没发生,几秒后没了。我感到很奇怪,这有什么问题? 我用了debug来解决问题。我上网查了一下debug怎么用。试了一下,还是有问题。 所以我上网查了一下“C语言scanf的浮点数用%什么”,发现是%f。然后突然意外发现,我地址呢? 原来我scanf("%f",s); 的s前忘记加&号了。 改了,以为好了,还是5个wa。 我以为我逻辑错了,用了很多数据,都是对的。 我又用了debug来查看,还是不行。突然又想起来:为什么用double?用float不行吗? 我用了float.直接成功。 做程序要细心,有一些错不容易发现。不要范语法错误(虽然我就是)。其实在发帖子之前还是有一个错误:变量忘记赋值。 直接用了40分钟才解出来。

2024/9/30 15:18
加载中...