VR引擎程序设计基础1009night

88 阅读2分钟

函数 返回多个值 同个类型返回数组 不同类型多个值 out参数 在形参后面加上out

int num2 = 2;
            //函数 返回多个值  同个类型返回数组   不同类型多个值 out参数 在形参后面加上out
            static bool isPrime(int num,out int num1)
            {
                num1 = 1;//定义out参数后面的变量在丽数内部必须要赋值
                return true;
            }
            isPrime(10,out num2);//将num1的值赋给num2
            Console.WriteLine(num2);

image.png

关于out参数的练习题

●编写一个方法来判断用户输入用户名和密码是否正确,返回用户一个登录结果,并且还要单独返回一个登录信息,如果用户名错误,除了返回登录结果之外,还要返回一个”用户名错误”,"密码错误"的提示信息

 Console.WriteLine("请输入用户名:");
            string name = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string password = Console.ReadLine();
            string message;//string message=1;
            static bool isLogin(string name, string password,out string message2)
            {
                if (name == "admin" && password == "123456")
                {
                    message2 = "登陆成功";
                    return true;
                }else if(name== "admin"&& password != "123456")
                {
                    message2 = "密码出错";
                }
                else if(name != "admin" && password == "123456")
                {
                    message2 = "用户名出错";
                }
                else
                {
                    message2 = "用户名密码出错";
                }
                return false;
            }
            isLogin(name, password, out message);//isLogin(name, password, ref message);
            Console.WriteLine(message);

ref 同样还是将函数中的变量的值带出来 不一样的是在函数中不用去赋值

image.png

例 递归

image.png

解析:青蛙 5个台阶f(n) 1112 1121 1211 1111 122->f(n-1) 2111 211 212->f(n-2)

题解:f(n)=f(n-1)+f(n-2)

Console.WriteLine("请输入台阶数n:");
            int n = Convert.ToInt32(Console.ReadLine());
            static int Jump(int n)
            {
                if (n == 1) return 1;
                if (n == 2) return 2;//11 2
                return Jump(n - 1) + Jump(n - 2);
            }
                Console.Write(Jump(n));

image.png

函数能够将n个盘子从xx移到xx

image.png

Console.WriteLine("请输入盘子数:");
            int n = Convert.ToInt32(Console.ReadLine());
            static void hanoi(int n, string start, string middle, string end)
            {
                if (n == 1)
                {
                    Console.WriteLine("从{0}经过{1}移到{2}", start, middle, end);
                    return;
                }
                hanoi(n - 1, start, end, middle);//将n-1个盘子移到中间的柱子上
                hanoi(1, start, middle, end);
                //剩下n-1个盘子
                hanoi(n - 1, middle, start, end);
            }

            hanoi(n, "A", "B", "C");

image.png

常亮 const关键字

const int num = 1;

枚举类型enum

提示用户选择-个qq在线状态,分别有OnLine 1,OffLine 2,Busy 3 3种状态,输入对应状态的编号打印出您选择的2qq状态是x(提示:使用switch)

public enum State
        {
            Online, Offine, Busy
        }



    }

    static void Main(string[] args)
    {
        Console.WriteLine("请输入状态编号:");
        string strNum = Console.ReadLine();
        switch (strNum)
        {
            case "1":
                Console.WriteLine(State.Online);
                break;
            case "2":
                Console.WriteLine(State.Online);
                break;
            case "3":
                Console.WriteLine(State.Online);
                break;
            default:
                Console.WriteLine("无状态");
                break;
        }




        

image.png

public enum Role//遵循大驼峰命名
        {
            射手 = 10, 坦克, 法师, 刺客, 辅助, 战士//每个枚举的名字都对应一个编号, 从0开始
        }



    }

    static void Main(string[] args)
    {
Role role = Role.射手;
        string strRole = Convert.ToString(role);//枚举类型的名字可以转成字符串
        Console.WriteLine(strRole + 1);
        int intRole = Convert.ToInt32(role);//可以转成整数
        //字符串转成枚举类型的值
        Role role2 = (Role)Enum.Parse(typeof(Role), "1");
        Console.WriteLine(role2);
        Console.WriteLine(intRole);

        if (role2 == Role.战士)
        {
            Console.WriteLine("防御加持");
        }

image.png