编写一个能求解多种平面图形(矩形、梯形、圆形、三角形)面积与周长的命令行程序。
时间: 2023-05-23 22:06:08 浏览: 161
平面图形的周长和面积复习PPT教案.pptx
A:好的,以下是一个Python的程序示例:
```python
import math
class Shape:
def area(self):
pass
def perimeter(self):
pass
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def perimeter(self):
return 2 * (self.length + self.width)
class Trapezoid(Shape):
def __init__(self, b1, b2, h):
self.b1 = b1
self.b2 = b2
self.h = h
def area(self):
return (self.b1 + self.b2) / 2 * self.h
def perimeter(self):
return self.b1 + self.b2 + 2 * math.sqrt((self.h ** 2) + ((self.b2 - self.b1) / 2) ** 2)
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
class Triangle(Shape):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def area(self):
s = (self.a + self.b + self.c) / 2
return math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))
def perimeter(self):
return self.a + self.b + self.c
while True:
shape = input("请输入图形的名称(矩形/梯形/圆形/三角形),或输入exit退出程序:")
if shape.upper() == "EXIT":
break
elif shape == "矩形":
length = float(input("请输入矩形的长度:"))
width = float(input("请输入矩形的宽度:"))
rect = Rectangle(length, width)
print(f"矩形的面积为{rect.area()}, 周长为{rect.perimeter()}.")
elif shape == "梯形":
b1 = float(input("请输入梯形的上底:"))
b2 = float(input("请输入梯形的下底:"))
h = float(input("请输入梯形的高:"))
trapezoid = Trapezoid(b1, b2, h)
print(f"梯形的面积为{trapezoid.area()}, 周长为{trapezoid.perimeter()}.")
elif shape == "圆形":
radius = float(input("请输入圆形的半径:"))
circle = Circle(radius)
print(f"圆形的面积为{circle.area()}, 周长为{circle.perimeter()}.")
elif shape == "三角形":
a = float(input("请输入三角形的第一条边长:"))
b = float(input("请输入三角形的第二条边长:"))
c = float(input("请输入三角形的第三条边长:"))
triangle = Triangle(a, b, c)
print(f"三角形的面积为{triangle.area()}, 周长为{triangle.perimeter()}.")
else:
print("输入有误,请重新输入。")
```
用户可以输入要计算的图形的名称和相应的参数,程序将根据用户的输入返回相应的面积和周长。程序可以无限次运行,直到用户输入“exit”退出为止。请注意,此示例程序中的计算公式可能存在精度问题,只适用于简单的应用场景。
阅读全文