一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?
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次落地经过的总路程,需要将每一次落地经过的路程相加而得到。
结果为: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语言的编译更具有弹性。
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);
}
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
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次落地的