zoukankan      html  css  js  c++  java
  • C#结构体的使用

    C#结构体的使用

    捕获5

    结构体:相当于是我们自己定义的一种复杂的类型。

    常见简单类型:int...  double float bool char string 

    常见复杂类型:DateTime  数组类型

    生活中大部份的对象都是复合型的对象。

    如何定义结构体类型?

    一般来说结构体的定义要放在class的外面或class的里面,尽量不放在Main的里面。
    struct 自定义类型名
    {
        public 变量类型  变量名;
        ......;
        ......;
        ......;

    }
    例如:
        struct YuanGong  //自定义的数据类型。用来描述员工的信息。
        {
            public string NO;
            public string Name;
            public int Age;
            public string Nation;
            public bool Sex;
        }

    如何用自定义的类型来定义变量?

    自定义类型名 变量 = new 自定义类型名();

    如何使用自定义类型的变量?
    变量.子变量 = "xxxx";
    Console.WriteLine(变量名.子变量);
    例如:
                //定义自定义类型的变量
                YuanGong zhangsan = new YuanGong();
                //给变量赋值
                zhangsan.NO = "Y001";
                zhangsan.Name = "张三";
                zhangsan.Age = 22;
                zhangsan.Sex = true;
                zhangsan.Nation = "汉族";
                //对变量取值
                Console.WriteLine(zhangsan.NO+" "+zhangsan.Name+" "+zhangsan.Age);
                Console.WriteLine(zhangsan.Nation+" "+(zhangsan.Sex?"男":"女"));

    例题1.描述员工信息

    struct YuanGong  //自定义的数据类型。用来描述员工的信息。
        {
            public string NO;
            public string Name;
            public int Age;
            public string Nation;
            public bool Sex;
            public LianXiFangShi LianXi;
        }
        struct LianXiFangShi
        {
            public string QQ;
            public string WeiXin;
            public string Email;
            public string Telephone;
            public string Address;
            public string ZipCode;
        }
        class Program
        {
            static void Main(string[] args)
            {
                YuanGong zhangsan = new YuanGong();
                zhangsan.NO = "Y001";
                zhangsan.Name = "张三";
                zhangsan.Age = 22;
                zhangsan.Sex = true;
                zhangsan.Nation = "汉族";
                zhangsan.LianXi.QQ = "434354546";
                //zhangsan.LianXi.WeiXin = "张三三";
                //zhangsan.LianXi.Email = "zhangsan@tom.com";
                zhangsan.LianXi.Address = "张店区张家胡同";
                zhangsan.LianXi.ZipCode = "25000";
                zhangsan.LianXi.Telephone = "";
    
                YuanGong lisi = new YuanGong();
                lisi.NO = "Y002";
                lisi.Name = "李四";
                lisi.Age = 25;
                lisi.Sex =false;
                lisi.Nation = "回族";
    
    
                Console.WriteLine("**********张三的个人信息***********");
                Console.WriteLine(zhangsan.NO+"	"+zhangsan.Name+"	"+zhangsan.Age);
                Console.WriteLine(zhangsan.Nation+"	"+(zhangsan.Sex?"":""));
                Console.WriteLine("联系方式:");
                Console.WriteLine(
                    "QQ:"+(zhangsan.LianXi.QQ==null?"":zhangsan.LianXi.QQ)+"	"//若没输入qq,打印“无”
                    +"微信:"+(zhangsan.LianXi.WeiXin == null?"":zhangsan.LianXi.WeiXin)+"	"
                    +"手机:"+(zhangsan.LianXi.Telephone==null?"":zhangsan.LianXi.Telephone)+"	"
                    +"邮箱:"+(zhangsan.LianXi.Email==null?"":zhangsan.LianXi.Email)+"	"
                    +"地址:"+zhangsan.LianXi.Address+"	"+zhangsan.LianXi.ZipCode);
    
    
            }

    捕获9

    例题、两人对战游戏

    struct Ren
            {
                public string Name;
                public int Blood;
                public int Attack;
                public int Defend;
                public int Quick;
                
            }
            struct WuGong
            {
                public string Name;
                public int Attack;
            }
            static void Main(string[] args)
            {
                WuGong[] wg = new WuGong[3];
                wg[0].Name = "辟邪剑法";
                wg[0].Attack = 500;
                wg[1].Name = "降龙十八掌";
                wg[1].Attack = 600;
                wg[2].Name = "暗然消魂掌";
                wg[2].Attack = 400;
        
                Ren r1 = new Ren();
                Ren r2 = new Ren();
                //初化两个战斗人员的属性。
                Console.Write("请输入第一个战士姓名:");
                r1.Name = Console.ReadLine();
                Console.Write("请输入第二个战士姓名:");
                r2.Name = Console.ReadLine();
                //生成血量
                Random rand = new Random();
                r1.Blood = rand.Next(1000) + 1000;
                r2.Blood = rand.Next(1000) + 1000;
                //生成攻防
                r1.Attack = rand.Next(50) + 50;
                r2.Attack = rand.Next(50) + 50;
                r1.Defend = rand.Next(50) + 50;
                r2.Defend = rand.Next(50) + 50;
                //生成身法
                r1.Quick = rand.Next(100);
                r2.Quick = rand.Next(100);
    
                Console.WriteLine("姓名:" + r1.Name + "	生命力:" + r1.Blood+"	攻击力:"+r1.Attack+"	防御力:"+r1.Defend+"	敏捷度:"+r1.Quick);
                Console.WriteLine("VS");
                Console.WriteLine("姓名:" + r2.Name + "	生命力:" + r2.Blood + "	攻击力:" + r2.Attack + "	防御力:" + r2.Defend + "	敏捷度:" + r2.Quick);
                Console.WriteLine("按任意键开始...");
                Console.ReadKey();
                while(true)
                {
                    //跳出循环。
                    if(r1.Blood <=0 && r2.Blood<=0)
                    {
                        Console.WriteLine(r1.Name+""+r2.Name+"同归于尽了!");
                        break;
                    }
                    if(r1.Blood<=0)
                    {
                        Console.WriteLine(r2.Name+""+r1.Name+"KO了~!");
                        break;
                    }
                    if (r2.Blood <= 0)
                    {
                        Console.WriteLine(r1.Name + "" + r2.Name + "KO了~!");
                        break;
                    }
    
                    //对战
                    
                    //大招
                    int dz1 = rand.Next(10); //r2的大招
    
                    if (dz1 >= 8) //大招
                    {
                        WuGong w1 = wg[rand.Next(3)];
    
                        int b1 = rand.Next(100); //r1失掉的血
                        int gj1 = rand.Next(100) - 50; //为了浮动r1的攻击
                        int fy1 = rand.Next(100) - 50;//为了浮动r2的防御
                        b1 = (b1 + (r2.Attack + gj1+w1.Attack) - (r1.Defend + fy1)) < 0 ? 0 : (b1 + (r2.Attack + gj1+w1.Attack) - (r1.Defend + fy1));
                        r1.Blood -= b1;
                        if (r1.Blood < 0)
                        {
                            r1.Blood = 0;
                        }
    
                        //稍待一下。
                        System.Threading.Thread.Sleep(2000);
    
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine(r2.Name + "使用大招"+w1.Name+"发起攻击," + r1.Name + "失掉生命力" + b1 + "点!");
                        Console.ResetColor();
                        Console.WriteLine();
                       
                    }
                    else //平常招式
                    {
                        int sf1 = rand.Next(80);
                        if (r1.Quick - sf1 >= 0)
                        {
                            Console.WriteLine(r1.Name + "躲过了" + r2.Name + "攻击");
                        }
                        else
                        {
                            int b1 = rand.Next(100); //r1失掉的血
                            int gj1 = rand.Next(100) - 50; //为了浮动r1的攻击
                            int fy1 = rand.Next(100) - 50;//为了浮动r2的防御
                            b1 = (b1 + (r2.Attack + gj1) - (r1.Defend + fy1)) < 0 ? 0 : (b1 + (r2.Attack + gj1) - (r1.Defend + fy1));
                            r1.Blood -= b1;
                            if (r1.Blood < 0)
                            {
                                r1.Blood = 0;
                            }
    
                            //稍待一下。
                            System.Threading.Thread.Sleep(2000);
    
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine(r2.Name + "发起攻击," + r1.Name + "失掉生命力" + b1 + "点!");
                            Console.ResetColor();
                            Console.WriteLine();
                        }
                    }
                    //稍待一下。
                    System.Threading.Thread.Sleep(2000);
    
                    int dz2 = rand.Next(10); //r2的大招
    
                    if (dz2 >= 8) //大招
                    {
                        WuGong w1 = wg[rand.Next(3)];
    
                        int b2 = rand.Next(100); //r1失掉的血
                        int gj1 = rand.Next(100) - 50; //为了浮动r1的攻击
                        int fy1 = rand.Next(100) - 50;//为了浮动r2的防御
                        b2 = (b2 + (r1.Attack + gj1 + w1.Attack) - (r2.Defend + fy1)) < 0 ? 0 : (b2 + (r1.Attack + gj1 + w1.Attack) - (r2.Defend + fy1));
                        r2.Blood -= b2;
                        if (r2.Blood < 0)
                        {
                            r2.Blood = 0;
                        }
    
                        //稍待一下。
                        System.Threading.Thread.Sleep(2000);
    
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine(r1.Name + "使用大招" + w1.Name + "发起攻击," + r2.Name + "失掉生命力" + b2 + "点!");
                        Console.ResetColor();
                        Console.WriteLine();
    
                    }
                    else
                    {
    
                        int sf2 = rand.Next(80);
                        if (r2.Quick - sf2 >= 0)
                        {
                            Console.WriteLine(r2.Name + "躲过了" + r1.Name + "攻击");
                        }
                        else
                        {
                            int b2 = rand.Next(100);//r2失掉的血
                            int gj2 = rand.Next(100) - 50; //为了浮动r1的攻击
                            int fy2 = rand.Next(100) - 50;//为了浮动r2的防御
                            b2 = (b2 + (r1.Attack + gj2) - (r2.Defend + fy2)) < 0 ? 0 : (b2 + (r1.Attack + gj2) - (r2.Defend + fy2));
                            r2.Blood -= b2;
                            if (r2.Blood < 0)
                            {
                                r2.Blood = 0;
                            }
    
                            Console.ForegroundColor = ConsoleColor.Blue;
                            Console.WriteLine(r1.Name + "发起攻击," + r2.Name + "失掉生命力" + b2 + "点!");
                            Console.ResetColor();
                            Console.WriteLine();
                        }
                    }
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.Write("姓名:" + r1.Name + "生命力:" + r1.Blood + "	");
                    Console.Write("姓名:" + r2.Name + "生命力:" + r2.Blood);
                    Console.ResetColor();
                    Console.WriteLine();
                    Console.WriteLine();
    
                }
    
            }

    捕获8

    练习1.输入学生成绩信息

    struct Student
            {
                public string Name;
                public int No;
                public double ToltallGrd;
                public double Chinese;
                public double math;//快速移至下行尾
            }
            //输入学生成绩信息并排序
            static void Main(string[] args)
            {
                Student[] a = new Student[5];
                //输入成绩
                GetGrade(a);
                //根据总分排序
                Order(a);
                //输出学生成绩信息
                Output(a);
    
            }
    
            private static void Output(Student[] a)
            {
                for (int i = 0; i < a.Length; i++)
                {
                    Console.WriteLine("姓名:{0}	学号:{1}	名次:	{2}总分:{3}	语文:{4}	数学:{5}",
                        a[i].Name, a[i].No, i + 1, a[i].ToltallGrd, a[i].Chinese, a[i].math);
                }
            }
    
            private static void Order(Student[] a)
            {
                for (int i = 1; i <= a.Length - 1; i++)
                {
                    for (int j = 1; j <= a.Length - i; j++)
                    {
                        if (a[j].ToltallGrd > a[j - 1].ToltallGrd)
                        {
                            Student tem = a[j];
                            a[j] = a[j - 1];
                            a[j - 1] = tem;
                        }
                    }
                }
            }
    
            private static void GetGrade(Student[] a)
            {
                for (int i = 0; i < a.Length; i++)
                {
    
                    Console.WriteLine("请输入第" + (i + 1) + "名学生姓名:");
                    a[i].Name = Console.ReadLine();
                    a[i].No = i + 1;
                    Console.Write("语文:");
                    a[i].Chinese = Convert.ToDouble(Console.ReadLine());
                    Console.Write("数学:");
                    a[i].math = Convert.ToDouble(Console.ReadLine());
                    a[i].ToltallGrd = a[i].Chinese + a[i].math;
    
                }
            }

    捕获12

    练习2.郭靖PK欧阳克

    struct Roal
        {
            public int blood;
            public int def;
            public int mov1;
            public int mov2;
    
        }
        class 对战游戏
        {
            static void Main(string[] args)
            {
                Roal cast1, cast2;
                //角色1的属性
                cast1.blood = 1000;
                cast1.def = 50;
                cast1.mov1 = 120;
                cast1.mov2 = 160;
                //角色2的属性
                cast2.blood = 1000;
                cast2.def = 60;
                cast2.mov1 = 110;
                cast2.mov2 = 130;
    
                //颜色设置
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.BackgroundColor = ConsoleColor.White;
                Console.Clear();
    
                //输入操作
                //角色1攻击
                while(cast1.blood >0&&cast2.blood >0)
                {
                Console.WriteLine("请郭靖发招:a-降龙十八掌 s-打狗棒");
                string m = Console.ReadLine();
                Random n1 = new Random();
                if (m == "a")
                {
                    int s = n1.Next(60);//角色2的防御值
                    int s2 = cast1.mov1 - s;//攻击效果
                    cast2.blood -= s2;//角色2血量减少
                }
                else if (m == "s")
                {
                    int s = n1.Next(60);//角色2的防御值
                    int s2 = cast1.mov2 - s;//攻击效果
                    cast2.blood -= s2;//角色2血量减少
     
                }
                //角色2攻击
                 Console.WriteLine("请欧阳克发招:k-蛤蟆功 l-九阴真经");
                string h= Console.ReadLine();
                Random i = new Random();
                if (h  == "k")
                {
                    int s = i.Next(50);//角色1的防御值
                    int s2 = cast1.mov1 - s;//攻击效果
                    cast1.blood -= s2;//角色1血量减少
                }
                else if (h == "l")
                {
                    int s = n1.Next(50);//角色1的防御值
                    int s2 = cast1.mov2 - s;//攻击效果
                    cast1.blood -= s2;//角色1血量减少
                }
                else
                {
                    Console.WriteLine("发招失败");
                }
                Console.Clear();
                cast1.blood  = cast1.blood  < 0 ? 0 : cast1.blood ;//控制血量不要小于零
                cast2.blood = cast2.blood < 0 ? 0 : cast2.blood;//控制血量不要小于零
                Console.WriteLine ("郭靖血量:{0}",cast1.blood );
                Console.WriteLine("欧阳克血量:{0}",cast2.blood);
                }
    
                //输出对殴结果
                if (cast1.blood == 0 && cast2.blood == 0)
                {
                    Console.WriteLine("同归于尽");
                }
                else if (cast1.blood ==0)
                {
                    Console.WriteLine("欧阳克打败郭靖,抢走黄蓉");
                }
                else
                {
                    Console.WriteLine("郭靖打败欧阳克,和黄蓉去了桃花岛");
                }
    
    
            }
    捕获6
  • 相关阅读:
    mac上python3安装HTMLTestRunner
    双目深度估计传统算法流程及OpenCV的编译注意事项
    深度学习梯度反向传播出现Nan值的原因归类
    1394. Find Lucky Integer in an Array
    1399. Count Largest Group
    1200. Minimum Absolute Difference
    999. Available Captures for Rook
    509. Fibonacci Number
    1160. Find Words That Can Be Formed by Characters
    1122. Relative Sort Array
  • 原文地址:https://www.cnblogs.com/wllhq/p/4204484.html
Copyright © 2011-2022 走看看