#include
int main()
{
double t = 0;
double h = 100;
int i;
t = h;
for(i = 2; i <= 10; i ++)
{
t+=h;//第i次落地时的总路程
h/=2;//第i-1次落地后,弹起的高度。
}
h/=2; //最后一次计算的是第9次反弹高度,再除2就是第10次的。
printf("%lf, %lf\n", t, h);
return 0;
}
#include
int main(void) {
double h = 100.0, sum = 0.0;
int i = 0;
while (i++ < 10) {
sum += h;
h /= 2;
sum += h;
}
sum -= h; /*第10次落地后总路程就不再算了,所以把第10次反弹高度减去*/
printf("总共经过%g米,第10次反弹%g米。\n", sum, h);
return 0;
}
m = m/2; y = y+m*3;
表明的是 一次弹起到最高点的时候经过的路程,问题是什么? 楼主可以看看 是第N次落地时候反弹多高,共经过多少米,楼主的计算公式比它多了个最后弹起的高度 ,应该减去最后一次弹起的高度!
举个例子 1000米的时候 弹起一次反弹多高呢 ? 显然是500 经过的路程呢 1000 按照楼主的计算公式就是1500米,多在了最高多计算了一次 减去就行了!改程序的循环部分 我还没没有想好 ,不过按下面这样改
#include
#include
int main()
{
float m,n,i,y=0;
scanf("%f%f",&m,&n);
for(i=0;i
m=m/2;
y=y+m*3;
}
y -= m;
printf("%.2f %.2f\n",m,y);
}