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

—————————————————————————————————

首先分析题意可知

第一次落地经过的路程,为落地时的高度。

第二次落地经过的路程,为落地时的高度乘以2,再加上前面走过的路程。

第三次落地经过的路程,为落地时的高度乘以2,再加上前面走过的路程。

第四次落地经过的路程,为落地时的高度乘以2,再加上前面走过的路程。

第五次落地经过的路程,为落地时的高度乘以2,再加上前面走过的路程。

第n次落地经过的路程,为落地时的高度乘以2,再加上前面走过的路程。

第一次反弹的高度,为落地时高度的一半。

第二次反弹的高度,为落地时高度的一半。

第三次反弹的高度,为落地时高度的一半。

第四次反弹的高度,为落地时高度的一半。

第五次反弹的高度,为落地时高度的一半。

第n次反弹的高度,为落地时高度的一半。

—————————————————————————————————

# include 

int main (void)
{	
	double sn= 100,hn= sn/2;	//sn为第一次落地时走过的路程,hn为第一次弹回的高度
	int n;						//n为弹回的次数,用于循环中
	for(n=2;n<=10;n++)			
	{
		sn=sn+2*hn;				//第二次落地时走过的路程 等于 第一次落地时走过的路程 + 第一次弹回的过程*2(弹回一次,落地一次所以一乘2)
		hn=hn/2;				//第三次弹回的路程是上一次的一半,所以除以2
	}
	
	printf("第十次落地时总共经过了%f米\n",sn);
	printf("第十次反弹%f米\n",hn);
	
	return 0;
}

你可能感兴趣的:(山西专升本C语言,C语言,专升本)