描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    如下图,AB 是圆的一条弦,ABC形成一个弓形,在两行中分别输入AB和CD的长度,计算并分两行依次输出该圆的半径和弓形ABC的面积,结果均严格保留小数点后2位有效数字,应用三角函数和反三角函数时查阅math模块文档或利用自动补全完成。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    image.png‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    提示:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    从图中可知:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    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个浮点数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    输出‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    在两行内分别输出半径和弓形面积‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    示例
    输入:

    1. 26.5
    2. 8

    输出

    1. 14.97
    2. 151.16

    参考代码

    1. # ------------ ------- -------- ----------- -----------
    2. # @File : 3.4.1 计算弓形的面积.py
    3. # @Contact : vasp@qq.com
    4. # @Copyright : 2018-2025, Wuhan University of Technology
    5. # @Modify Time: 2021/4/26 11:06
    6. # @Author : 赵广辉
    7. # @Version : 1.0
    8. # @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验
    9. # ------------ ------- -------- ----------- -----------
    10. # AB 是圆的一条弦,ABC 形成一个弓形,在两行中分别输入AB 和CD 的长度,
    11. # 计算弓形的面积,结果保留小数点后2 位有效数字。
    12. # 注意math库中反三角函数的写法
    13. # 测试用例:
    14. # 输入:
    15. # >>>26.5
    16. # >>>8
    17. # 输出:
    18. # 14.97
    19. # 151.16
    20. import math
    21. AB = float(input()) # 弦长度
    22. CD = float(input()) # 弓高度
    23. # 半弦长
    24. AD = AB / 2
    25. # 半径
    26. OA = (AD ** 2 + CD ** 2) / (2 * CD)
    27. # 圆心角
    28. AOB = 2 * math.asin(AD / OA)
    29. # 拱形所在扇形的面积
    30. area_of_sector = AOB / (math.pi * 2) * math.pi * OA ** 2
    31. # 三角形面积
    32. area_of_triangle = 1/2 * OA * OA * math.sin(AOB)
    33. # 拱形面积
    34. area_of_arch = area_of_sector - area_of_triangle
    35. print(round(OA, 2))
    36. print(round(area_of_arch, 2))
    1. # ------------ ------- -------- ----------- -----------
    2. # @File : 3.4.1 计算弓形的面积.py
    3. # @Contact : vasp@qq.com
    4. # @Copyright : 2018-2025, Wuhan University of Technology
    5. # @Modify Time: 2021/4/26 11:06
    6. # @Author : 赵广辉
    7. # @Version : 1.0
    8. # @License : 仅限用于Python程序设计基础实践教程(赵广辉,高等教育出版社)配套实验
    9. # ------------ ------- -------- ----------- -----------
    10. # AB 是圆的一条弦,ABC 形成一个弓形,在两行中分别输入AB 和CD 的长度,
    11. # 计算弓形的面积,结果保留小数点后2 位有效数字。
    12. # 注意math库中反三角函数的写法
    13. # 测试用例:
    14. # 输入:
    15. # >>>26.5
    16. # >>>8
    17. # 输出:
    18. # 14.97
    19. # 151.16
    20. import math
    21. def area_of_arch(chord,arch):
    22. """接受弦长和弓高为参数,计算并返回弓形面积"""
    23. half_of_chord = chord / 2 # 半弦长
    24. radius = (half_of_chord ** 2 + arch ** 2) / (2 * arch)# 半径
    25. central_angle = 2 * math.asin(half_of_chord / radius)# 圆心角
    26. # 拱形所在扇形的面积
    27. area_of_sector = central_angle / (math.pi * 2) * math.pi * radius ** 2
    28. # 三角形面积
    29. area_of_triangle = 1/2 * radius * radius * math.sin(central_angle)
    30. # 拱形面积
    31. area_of_arch = area_of_sector - area_of_triangle
    32. return radius,area_of_arch
    33. if __name__ == '__main__':
    34. length_of_chord = float(input()) # 弦长度
    35. height_of_arch = float(input()) # 弓高度
    36. r,area = area_of_arch(length_of_chord, height_of_arch)
    37. print(round(r, 2))
    38. print(round(area, 2))