• 类例题:狮子和狼and求直线方程


    如题。

    狮子和狼:9匹狼,一匹匹钻出来。每次都尝试攻击狮子。狮子最终迎战。
    例题和代码为CSDN博主「gd_linlong」原创。本人做少许修改。感谢作者!

    主程序:

    static void Main(string[] args)
            {
                var lion = new Lion();
                var wolves = new Wolf[9];
                for (int i = 0; i < wolves.Length; i++)
                {
                    wolves[i] = new Wolf();
                    wolves[i].Attack();
                }
                lion.Attack();
                Console.WriteLine(Wolf.wolfcount);
                wolves[8] = null;
                GC.Collect();
                Thread.Sleep(3000);
                Console.WriteLine(Wolf.wolfcount);
                Console.ReadKey();
            }

    狼类程序:

    class Wolf
        {
            public static int wolfcount=0;
            public Wolf()
            {
                wolfcount++;
            }
            ~Wolf()
            {
                wolfcount--;
            }
            public void Attack()
            {
                if(wolfcount<5)
                {
                    Console.WriteLine("Run away...");
                }
                else
                {
                    Console.WriteLine("Let's bit lion!!");
                }
            }
        }

    狮子类程序:

     class Lion
        {
            public void Attack()
            {
                if(Wolf.wolfcount<=7)
                {
                    Console.WriteLine("Lion win!");
                }
                else
                {
                    Console.WriteLine("Lion is defeated");
                }
            }
        }

    在主程序最后加入类似以下代码,可以验证析构函数的执行,顺便看一下c#中的垃圾处理器。

    Console.WriteLine(Wolf.wolfcount);
                wolves[8] = null;
                GC.Collect();
                Thread.Sleep(3000);
                Console.WriteLine(Wolf.wolfcount);

    没有进程停顿,看不出结果(没有空闲时间回收内存)。

    已知两点,求直线方程:

    分析:

    1、写点类,包含横纵坐标字段和输入方法

    class Point
        {
            public int x, y;
            public void getPoint()
            {
                try
                {
                    Console.WriteLine("请输入该点横坐标:");
                    x = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输入该点纵坐标:");
                    y = int.Parse(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("输入错误!");
                    throw;
                }
            }
        }

    2、写直线类(y=kx+b),包括k、b两个字段,输入两点计算k和b的方法,打印显示直线方程的方法。

    class Line
        {
            double k=0, b=0;
            public void getKB(Point a,Point b)
            {
                k = (double)(b.y - a.y) / (b.x - a.x);
                //根据y=kx+b,得:b=y-kx。
                //已知y、k、x,直接求b
                this.b = a.y - k * a.x;
            }
            public void output_Line()
            {
                Console.WriteLine($"该直线方程为:y={k}x+{b}");
            }
        }

    3、主程序调用:a)声明两个点;b)声明一条直线;c)输入两个点的坐标;d)把两点坐标带入直线,求直线参数;e)输出直线。

    class Program
        {
            static void Main(string[] args)
            {
                Point a1=new Point(), a2=new Point();
                var l = new Line();
                a1.getPoint();
                a2.getPoint();
                l.getKB(a1, a2);
                l.output_Line();
                Console.ReadKey();
            }
        }

     想一想:当k或b为负数的时候,是否需要修改程序,使结果更符合数学习惯?怎么修改?

  • 相关阅读:
    Docker 部署 ElasticSearch-Head
    linux安装kibana-7.6.1
    CentOS部署ElasticSearch7.6.1集群
    linux 安装mysql 8
    Docker安装Mysql,并搭建一主一从复制集群,一主双从,双主双从集群
    linux 挂载光盘,rmp,yum
    git多账号登录问题
    js动态添加事件-事件委托
    yii2 RESTful api的详细使用
    yii2 ActiveRecord多表关联以及多表关联搜索的实现
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/12358803.html
Copyright © 2020-2023  润新知