C语言循环控制

描述

求一个从 100m 下落的球经过的距离和弹高。(谭浩强 C 语言 第三版 129 页第 6.9 题)

题目

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

题目解决思路

我们需要注意的是从地面回到上一次落地的一半再到地面,这个过程是两次。每次求出上次高度的一半乘以 2 ,然后加上第一次落地的高度就可以。

代码具体实现

#include <stdio.h> void main() { printf("嗨客网(www.haicoder.net)\n\n"); float sn = 100 , hn = sn /2; int n; for(n = 2; n<= 10; n++){ sn = sn + 2 * hn; hn = hn /2; } printf("第 10 次落地时共经过 %fm。 \n",sn); printf("第 10 次反弹 % fm 。 \n",hn); }

运行后,控制台输出如下:

12_6.9答案.png

我们会记录一个 hn 高度的 变量,乘以 2 就是每次从地面到空中再到地面的过程。然后定义了一个 sn 变量,用来加 sn 的和。