描述
如下图,AB 是圆的一条弦,ABC形成一个弓形,在两行中分别输入AB和CD的长度,计算并分两行依次输出该圆的半径和弓形ABC的面积,结果均严格保留小数点后2位有效数字,应用三角函数和反三角函数时查阅math模块文档或利用自动补全完成。
提示:
从图中可知:
AD = AB / 2          OA2 = AD2 + OD2          OD = OC – CD = OA – CD
代入后可得
OA = (AD2 + CD2 ) / (2  CD)          sin(∠AOB / 2) = AD / OA
圆心角:
∠AOB = 2  arcsin(AD / OA)
扇形AOB的面积为:
area_of_sector = ∠AOB / (2π)  π OA2
三角形 △AOB
area_of_triangle = 1 / 2  OA2  sin(∠AOB)
弓形面积为扇形AOB面积减去三角形△AOB面积之差:
area_of_arch = area_of_sector - area_of_triangle
输入
分2行输入2个浮点数
输出
在两行内分别输出半径和弓形面积
示例
输入:    
26.58
输出
14.97151.16
参考代码
# ------------ ------- -------- ----------- -----------# @File : 3.4.1 计算弓形的面积.py# @Contact : vasp@qq.com# @Copyright : 2018-2025, Wuhan University of Technology# @Modify Time: 2021/4/26 11:06# @Author : 赵广辉# @Version : 1.0# @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验# ------------ ------- -------- ----------- -----------# AB 是圆的一条弦,ABC 形成一个弓形,在两行中分别输入AB 和CD 的长度,# 计算弓形的面积,结果保留小数点后2 位有效数字。# 注意math库中反三角函数的写法# 测试用例:# 输入:# >>>26.5# >>>8# 输出:# 14.97# 151.16import mathAB = float(input()) # 弦长度CD = float(input()) # 弓高度# 半弦长AD = AB / 2# 半径OA = (AD ** 2 + CD ** 2) / (2 * CD)# 圆心角AOB = 2 * math.asin(AD / OA)# 拱形所在扇形的面积area_of_sector = AOB / (math.pi * 2) * math.pi * OA ** 2# 三角形面积area_of_triangle = 1/2 * OA * OA * math.sin(AOB)# 拱形面积area_of_arch = area_of_sector - area_of_triangleprint(round(OA, 2))print(round(area_of_arch, 2))
# ------------ ------- -------- ----------- -----------# @File : 3.4.1 计算弓形的面积.py# @Contact : vasp@qq.com# @Copyright : 2018-2025, Wuhan University of Technology# @Modify Time: 2021/4/26 11:06# @Author : 赵广辉# @Version : 1.0# @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验# ------------ ------- -------- ----------- -----------# AB 是圆的一条弦,ABC 形成一个弓形,在两行中分别输入AB 和CD 的长度,# 计算弓形的面积,结果保留小数点后2 位有效数字。# 注意math库中反三角函数的写法# 测试用例:# 输入:# >>>26.5# >>>8# 输出:# 14.97# 151.16import mathdef area_of_arch(chord,arch):"""接受弦长和弓高为参数,计算并返回弓形面积"""half_of_chord = chord / 2 # 半弦长radius = (half_of_chord ** 2 + arch ** 2) / (2 * arch)# 半径central_angle = 2 * math.asin(half_of_chord / radius)# 圆心角# 拱形所在扇形的面积area_of_sector = central_angle / (math.pi * 2) * math.pi * radius ** 2# 三角形面积area_of_triangle = 1/2 * radius * radius * math.sin(central_angle)# 拱形面积area_of_arch = area_of_sector - area_of_trianglereturn radius,area_of_archif __name__ == '__main__':length_of_chord = float(input()) # 弦长度height_of_arch = float(input()) # 弓高度r,area = area_of_arch(length_of_chord, height_of_arch)print(round(r, 2))print(round(area, 2))
