zy_021226 2023-03-28 11:34 采纳率: 83.3%
浏览 18
已结题

c#这个问题没有做出来,谁可以回答一下

c#描述一个几何图形的抽象类,包括求面积、求周长两个抽象方法,并派生出长方形类、正方形类、圆形类、三角形类,在主函数中输入图形的类别,并输入相关数据,求其面积和周长

  • 写回答

1条回答 默认 最新

  • apples_kk 2023-03-28 16:18
    关注
    
    //抽象类Geometric
        public abstract class Geometric
        {
            //抽象方法,求面积
            public abstract double Area();
    
            //抽象方法,求周长
            public abstract double Perimeter();
        }
    
    //长方形类Rectangle:
        public class Rectangle : Geometric
        {
            private double length;
            private double width;
    
            public Rectangle(double l, double w)
            {
                this.length = l;
                this.width = w;
            }
            public override double Area()
            {
                return length * width;
            }
    
            public override double Perimeter()
            {
                return 2 * (length + width);
            }
    
        }
    
    //正方形类Square:
        public class Square : Geometric
        {
            private double side;
    
            public Square(double side)
            {
                this.side = side;
            }
    
            public override double Area()
            {
                return side * side;
            }
    
            public override double Perimeter()
            {
                return 4 * side;
            }
        }
    
    //圆形类Circle:
        public class Circle : Geometric
        {
            private double radius;
    
            public Circle(double radius)
            {
                this.radius = radius;
            }
            public override double Area()
            {
                return Math.PI * radius * radius;
            }
    
            public override double Perimeter()
            {
                return 2 * Math.PI * radius;
            }
        }
    
    //三角形类Triangle:
        public class Triangle : Geometric
        {
            private double side1;
            private double side2;
            private double side3;
    
            public Triangle(double side1, double side2, double side3)
            {
                this.side1 = side1;
                this.side2 = side2;
                this.side3 = side3;
            }
    
            public override double Area()
            {
                double p = (side1 + side2 + side3) / 2;
                return Math.Sqrt(p * (p - side1) * (p - side2) * (p - side3));
            }
    
            public override double Perimeter()
            {
                return side1 + side2 + side3;
            }
        }
    
    //主函数
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("请输入图形的类型:");
                Console.WriteLine("1.长方形 2.正方形 3.圆形 4.三角形");
                int figure = Convert.ToInt32(Console.ReadLine());
                double area = 0, perimeter = 0;
                switch (figure)
                {
                    case 1:
                        Console.WriteLine("请输入对应的长和宽:");
                        double l = Convert.ToDouble(Console.ReadLine());
                        double w = Convert.ToDouble(Console.ReadLine());
                        Rectangle rect = new Rectangle(l, w);
                        area = rect.Area();
                        perimeter = rect.Perimeter();
                        break;
                    case 2:
                        Console.WriteLine("请输入对应的边长:");
                        double side = Convert.ToDouble(Console.ReadLine());
                        Square sqaure = new Square(side);
                        area = sqaure.Area();
                        perimeter = sqaure.Perimeter();
                        break;
                    case 3:
                        Console.WriteLine("请输入对应的半径:");
                        double r = Convert.ToDouble(Console.ReadLine());
                        Circle circle = new Circle(r);
                        area = circle.Area();
                        perimeter = circle.Perimeter();
                        break;
                    case 4:
                        Console.WriteLine("请输入对应的三角形三边长:");
                        double s1 = Convert.ToDouble(Console.ReadLine());
                        double s2 = Convert.ToDouble(Console.ReadLine());
                        double s3 = Convert.ToDouble(Console.ReadLine());
                        Triangle triangle = new Triangle(s1, s2, s3);
                        area = triangle.Area();
                        perimeter = triangle.Perimeter();
                        break;
                }
                Console.WriteLine("面积 = {0}", area);
                Console.WriteLine("周长 = {0}", perimeter);
                Console.ReadKey();
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行