一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?

#include"stdio.h"
main()
{
float n,s,h=100,i=2;
pirntf("弹跳次数:\n");
scanf("%d",&n);
while(i<=n)
{
h=h/2;
s=h+h/2:
i++;
}
printf("h=%.5f s=%.5f\n",h,s);
}
哪里有问题?
第一个printf打错了,还有s=h+h/2后面的;打成:不算

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过299.8米。

分析解答:

每次落地后反跳回原高度的一半,经过的路程为原高度的一半,即原来的高度除以2,

第一次落地经过100米,计作a1;

第二次落地经过(100/2)*2=100米,计作a2;

第三次落地经过(100/4)*2=50米,计作a3;

第四次落地经过(100/8)*2=25米,计作a4;

第n次落地经过[100/2^ (n-1)]*2=100/2^ (n-2),计作an;

10次落地共经过路程:

S10=a1+a2+a3+⋯⋯+a10=100+100+50+⋯⋯+100/2^ 8=299.6米。

扩展资料:

1、分析球每一次落地时经过的路程,包括下落和反弹两部分路程。

如:第一次落地经过100米;之后反弹50米,再落地50米,因此,第二次落地经过100米;之后反弹25米,再落地25米,因此,第三次落地经过50米;⋯⋯归纳总结得到球落地经过路程的规律。

2、10次落地经过的总路程,需要将每一次落地经过的路程相加而得到。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-30

结果为:299.6米

解题过程如下:

def drop(high)

length=height=0.0

tmp=high

#循环9次,下标从0开始

for i in range(9)

length+=tmp

tmp=tmp/2

height=tmp

print('第%d次落地的路程(没有算最初的100米)%f'%(i+2,length))

print('第%d次弹回的高度(只算了前9次)%f'%(i+1,height))

print(length+high)#第一次落地的100米距离应该额外加上

print(height/2)#以上的结果只是第九次反弹的高度,应该再除以2得到第10次的反弹高度

# for i in range(10)

# high=high/2

# height=high

# print(height,end=' ')

a1+a2+a3+⋯⋯+a10=100+100+50+⋯⋯+100/2^ 8=299.6

扩展资料



c语言性质:

程序的第一行#include <stdio.h>是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。

下一行int main()是主函数,程序从这里开始执行。

下一行printf(...)是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。

下一行return 0;终止 main() 函数,并返回值 0。

特点:

C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

不同的变量类型可以用结构体(struct)组合在一起。

只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。

部份的变量类型可以转换,例如整型和字符型变量。

通过指针(pointer),C语言可以容易的对存储器进行低级控制。

预编译处理(preprocessor)让C语言的编译更具有弹性。

本回答被网友采纳
第2个回答  推荐于2018-05-09
#include"stdio.h"
main()
{
float n,s,h=100,i=2;//这里后面用到的i和n均是整数,要用整形定义, 即int s=0,i=2;
pirntf("弹跳次数:\n");
scanf("%d",&n);
while(i<=n)
{
h=h/2;
s=h+h/2:
i++;
}
printf("h=%.5f s=%.5f\n",h,s);
}

参考如下:
#include <stdio.h>
void main()
{
float s=0,h=100;
int n,i=1;
printf("输入要计算的弹跳次数 :\n");
scanf("%d",&n);
while(i<=n)
{
s+=h;
h=h/2;
i++;
}
printf("h=%g s=%g\n",h,s);
}本回答被提问者和网友采纳
第3个回答  2019-07-04
tour = []height = []
hei = 100.0 # 起始高度tim = 10 # 次数
for i in range(1, tim + 1): # 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
if i == 1: tour.append(hei)
else: tour.append(2*hei)
hei /= 2
height.append(hei)
print('总高度:tour = {0}'.format(sum(tour)))print('第10次反弹高度:height = {0}'.format(height[-1]))
以上实例输出结果为:
总高度:tour = 299.609375第10次反弹高度:height = 0.09765625
第4个回答  2012-03-16
int n;
float s = 100, h=100, i=2, t = 1;

printf("弹跳次数:\n");
scanf("%d",&n);

while(i<=n)
{
t *= 2 ;
s += (h/t)*2;
i++;
}
printf("h=%.5f ,s=%.5f\n", h, s);
这个里面没设定0次落地的
相似回答