用割圆术逼近圆周率
取单位圆,作其内接正六边形,并重复以下步骤:
- 连接圆心与正
$n$ 边形每条边终点并延长,交圆于$n$ 个新的点;将原$n$ 边形各顶点和这$n$ 个新的点顺次连接,便形成了正$2n$ 边形。 - 若原正
$n$ 边形边长$A_n$ (注意到$A_6=1$ ):将正$n$ 边形分成$n$ 个等腰三角形,可求出三角形底边上的高$H_n$ 。 - 利用
$A_n$ 和$H_n$ 可求出正$2n$ 边形比正$n$ 边形多出来的面积,进而求出正$2n$ 边形的面积,它是$\pi$ 的近似值。 - 利用
$1-H_n$ 和$A_n$ ,可求出$A_{2n}$ ,以供下次循环使用。
设计程序,打印出单位圆内接正
在某款游戏中,攻击可能给敌人施加某种状态。是否施加状态由按一定规则运作的一些计时器(浮点类型对象)和计数器(整数类型对象)共同决定。规则如下:
- 每种攻击类型的计时器和计数器相互独立。
- 初始时刻,重置所有计数器为 2;重置所有计时器为 2.5,随后计时器随时间推移连续增加,每秒增加 1。
- 当进行某类型攻击时:
- 若该类型攻击的计数器为 2,则重置该计数器为 0;否则该计数器自增 1;
- 如果该类型的攻击的计时器
$\ge 2.5$ ,则重置其为 0.0; - 当且仅当 3.1 或 3.2 中的条件得到满足时,施加状态。
例:某角色在 0s 0.8s 1.6s 2.4s 3.2s 进行同类型攻击,则第一次,第四次和第五次攻击施加状态。
(1)如果只使用特定类型的攻击,设计程序实现功能:按顺序输入每次攻击的时间,判断这些攻击是否施加状态。
(2)该游戏共有四种类型的攻击,用 'A'
,'Z'
,'E'
,'Q'
表示。设计程序实现功能:按顺序输入攻击类型和攻击时间,判断这些攻击是否施加状态。需要设计错误处理,合理地处理攻击类型不合法(比如输入 'B'
作为攻击类型)的情况。