题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游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分钟才解出来。