c语言,一个球从某高度h落下,每次落地后反弹回原来高度的一半,再落下。编程计算球在10次落地?
根据你的题目和输出样式截图分析:
1、每次输出当前坠落的高度,及球本次坠落后经过的距离总和。
2、输出包含小数,因此高度及距离变量采用浮点数。
3、递归/循环只执行10次。
3、看你图上,输出浮点数小数不显示多余的0,因此打印格式要用%g而不是%f(最多保留6位)。
#include <stdio.h>
void drop(float height);
int main()
{
float height;
printf("初始高度:");
scanf("%f",&height);
drop(height);
return 0;
}
void drop(float height)
{
static int cnt=1;
static float distance=0;//每次坠落后球移动的距离总和
if(height>0){
distance+=height;
printf("第%d次高度%g\n",cnt,height);
printf("第%d次距离%g\n",cnt,distance);
if(cnt<10)
cnt++,distance+=height/2,drop(height/2);
else
cnt=1,distance=0;
}
}