C#——Circle(圆)类

问题描述 

定义一个Circle类,其功能有:

-两个double类型属性X和Y,可读写圆心坐标

-一个double类型属性Radius,可读写圆的半径

-一个构造方法,以指定的x,y,radius来构造

-一个只读属性Area,获取圆面积

-一个只读属性Perimeter,获取圆周长

-一个方法bool Contains(double x, double y),如果指定的点(x, y)处于本圆内,返回true

-一个方法bool Contains(Circle circle),如果指定的圆circle包含在本圆内,返回true

-一个方法bool Extend(double range, out Circle newCircle),半径扩大(加上range),输出扩大后的newCircle,返回true。如果Radius+range为负,无法扩大,则输出原来的圆,且返回false。

在一个Main方法中对上述功能进行测试 

解决方案 

using System;

namespace HomeWork1
{
    //定义一个Circle类,其功能有
    class Circle
    {
        //-两个double类型属性X和Y,可读写圆心坐标
        public double X
        {
            set;
            get;
        }
        public double Y
        {
            set;
            get;
        }
        //-一个double类型属性Radius,可读写圆的半径
        public double Radius 
        {
            set;
            get;
        }
        //-一个构造方法,以指定的x,y,radius来构造
        public Circle(double X, double Y, double Radius) 
        {
            this.X = X;
            this.Y = Y;
            this.Radius = Radius;
        }
        //-一个只读属性Area,获取圆面积
        public double Area 
        {
            get {
                return Radius * Radius * 3.1415926;
            }
        }
        //-一个只读属性Perimeter,获取圆周长
        public double Perimeter
        {
            get { 
                return 2 * Radius * 3.1415926;
            }
        }
        //-如果指定的点(x, y)处于本圆内,返回true
        public bool Contains(double x, double y) {
            if ((x - X) * (x - X) + (y - Y)* (y - Y) < Radius * Radius) {
                return true;
            }
            return false;
        }
        //-如果指定的圆circle包含在本圆内,返回true
        public bool Contains(Circle circle) {
            if (Radius>circle.Radius 
                && (Radius - circle.Radius) * (Radius - circle.Radius) > (circle.X - X) * (circle.X - X) + (circle.Y - Y) * (circle.Y - Y))
            {
                return true;
            }
            return false;
        }
        //-半径扩大(加上range),输出扩大后的newCircle,返回true。如果Radius+range为负,无法扩大,则输出原来的圆,且返回false。
        public bool Extend(double range, out Circle newCircle) {
            newCircle = this;
            if (newCircle.Radius + range > 0) {
                newCircle.Radius = newCircle.Radius + range;
                return true;
            }
            return false;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {

            Circle circle = new Circle(1,1,3);
            Console.WriteLine("面积:{0}\t周长:{1}",circle.Area, circle.Perimeter);
            Console.WriteLine("(2,2)在本圆内:{0}", circle.Contains(2,2));
            Console.WriteLine("Circle(1,1,1)在本圆内:{0}", circle.Contains(new Circle(1,1,1)));
            circle.Extend(2,out circle);
            Console.WriteLine("面积:{0}\t周长:{1}", circle.Area, circle.Perimeter);
        }
    }
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值