C语言问题!

一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?此提如何用C求解?小弟琢磨2小时没想出来。望高手指点迷津!sum_height+=height*2;还是sum_height+=height*3;? 反弹一次是100(初始高度)+50(反弹高度);高度=高度⼀2;那总经过米数是不是应该是减半后的高度*3?
2026年09月20日 15:51
有4个网友回答
网友(1):

#include"stdio.h"
main()
{
int n,h=100,s=100;
for(n=2;n<11;n++)
{
h/=2;
s+=h*2;
}
printf("第十次落地时,共经过%d米\n,第10次反弹高度为%d米\n",s,h/2);
}
当n=2的时候,h/=2表示第一次反弹的高度,s+=h*2;表示第二次落地式经过的距离。所以当n=10最后一次循环时,循环里面的h还只是第九次反弹的高度,,所以后面的输出还要再除以2

网友(2):

测试一下是否正确。
#include
void main()
{
double sum = 100.0, last = 50.0;
int i;

for (i = 1; i < 10; ++i)
{
printf("%f\n", last);
sum += last * 2;
last /= 2;

}

printf("%f\t%f\n", sum, last * 2);
}

网友(3):

#include
main()
{float height=100.0,sum_height=100;
int i;
for(i=1;i<10;i++) {
height=height/2;
sum_height+=height*2;
}
printf("%fm\n",sum_height);
printf("%fm\n",height);
return 0;
}

网友(4):

#include
void main()
{
int i;
double n=100.0,a=100.0;
for(i=0;i<10;i++)
{
a/=2;
n+=a;
}
printf("小球共经过:%lf米\n,第10次的反弹高度是:%lf米\n",n,a);
}