首先这是一个很基础的C语言问题了,但是可能是小白,或许不太明白题意,当初我高中第一次接触到时,也脑补了好久,哈哈哈哈,现在就来给大家解答:
【解析题目】
1.小球从100米落下,那么它的第一次下落,距离就为100米,所以我们就直接把距离赋初值为100米。
2.小球每次都会反弹回原来的一半,可理解为第1次回弹距离为50, 2次为25 3次为12.5 4次为6.25 5次为3.125 6次为1.5625 7次为0.78125 8次为0.390625 9次为0.1953125 10次为0.09765625。
3.看图理解
由此可得出:每次反弹回去都是2段路程,于是乎我们先用一条语句得出单条路程的语句:
设个float m=100(因为实在100的基础上得到1半的)m=m/2;
3.最后,用一个累加和方式,设 float s=100(前面提到过),s=s+m*2;
最最后把这些放在for语句中, t为二表示次数是从第二次开始计算(第一次我们已经赋值为100了嘛) s表示累加的路程 m为单次的路程(记得*2哦,你弹下去了,还要上来嘛)
4.程序如下
#include"stdio.h"
main()
{ float m=100,s=100;int t;
printf("小球从100米开始落下:\n");
for( t=2;t<=10;t++)
{ m=m/2;
s+=m*2;
printf("从地面回弹第%d次落下,小球经过距离为%f\n",t,s);//测试次反弹 ,之所以没有第一次,
} //因为是与第二次一起算100+50*2=200
printf("第%d次,经过%f米,高度为%f",t-1,s,m/2) ;
}
5. 运算结果