题目:一个小球从100米高度自由下落,每次落地后又反弹原来高度的一半,再下落,求第10次落地时,共经过多少米,其反弹高度为多少?
思路:第一次下落高度为100米,反弹高度为0;第二次反弹高度变一半,第三次在折半………..从第二次进入循坏
#include<stdio.h>
int main()
{
double sum = 100.0;
double heigh = 100;
int i = 0;
for (i = 2; i <= 10; i++) //从第二次进入循坏
{
heigh = heigh / 2;
sum = sum + heigh * 2;
}
printf("在第10次落地是时共经过%lf,反弹高度是%lf\n", sum, heigh);
return 0;
}
运行结果: sum = 299.609375, heigh=0.195313
拓展1:求每次经过的路程和反弹高度
#include<stdio.h>
void heigh_sum(int n)
{
double sum = 100.0;
double heigh = 100;
int i = 0;
if (n == 1)
{
printf("第一次落地经过100米,反弹高度为0米");
}
else
for (i = 2; i <= 10; i++)
{
heigh = heigh / 2;
sum = sum + heigh * 2;
if (n == i)
break;
}
printf("第%d次落地,经过的路程为%lf,反弹高度为%lf", n, sum, heigh);
}
int main()
{
int num = 0;
printf("输入:");
scanf_s("%d", &num);
heigh_sum(num); //调用函数
return 0;
拓展2:
以上的for循环也可以用while(heigh/2)循坏