VR引擎程序设计基础——C#第四课

165 阅读4分钟

1.jpg

课前练习

  1. 练习一

image.png

            int num1 =Convert.ToInt32(Console.ReadLine());
            int num2 =Convert.ToInt32(Console.ReadLine());
            //必须要求出里面最小的数
            int min = num1>num2?num2:num1;
            while (true)
            {
                if(num1%min==0&&num2%min==0)
                {
                    Console.WriteLine("num1和num2的最大公约数为{0}", min);
                    break;
                }
                min--;
            }
  1. 练习二

image.png

  • 提示:如何生成随机数

image.png

            while (true)
            {
                Random a =new Random();//创建了一个随机数对象
                int num = a.Next(1,10);//这个随机数对象中有一个Next方法 不包括10
                Console.WriteLine(num);
            }

一、隐式类型转换和强制类型转换

image.png

二、进制

1.什么是二进制

  1. 二进制就是指逢二进一的数,也就是说这些数中你只能看到0和1因为遇到2就往前进一位了
  2. 那么十进制,八进制,十六进制以此类推,十六进制中会出现10,11,12...15等数字,这样很容易和十进制混到一起,所以我们规定10开始分别由a,b..e表示

2.十进制转二进制

我们使用的是辗转相除法,就是除2取余,然后将得到的余数倒着拼到一起就是对应的二进制,例:17转二进制

image.png

那么十进制转其他进制也可以用到该方法,比如十进制转八进制,可以除以8取余,然后再倒着将余数拼到一起

3.二进制转十六进制

每四位二进制对应一位的十六进制的数,所以我们可以计算每四位二进制对应的值,然后拼起来即可,例如1001转成十六进制

image.png

4.练习题

  1. 练习一
  • 将十六进制的数1a5b转成十进制的数是多少?
(1a5b)H=(1 1010 0101 1011)B=(6747)D
  1. 练习二
  • 将8进制的数237转成十六进制对应的值为多少?
(237)O=(10 011 111)B=(9F)H
  1. 练习三
  • 将2进制的数110110转成8进制对应的值为多少?
(110 110)B=(66)O

三.数组

当有10个相同类型的数据,比如要表示所有人的年龄,我们要怎么存这些数据?

  1. 创建10个变量
  2. 创建一个数组来存这些年龄

1.数组声明

在中括号前定义数组中存的值类型,然后后面跟着变量名 image.png

2.获取数组中的值

数组中每一位值都对应一个下标,下标从0开始,也就是数组的第一位对应的下标是0,我们通过下标拿到对应的值

image.png

3.声明有长度的数组的写法

image.png

4.修改数组中对应下标的值

image.png

5.获取数组长度的方法

image.png

6.遍历数组的两种方式

  1. 使用for循环遍历数组

image.png

  1. 使用forearch循环遍历数组

image.png

7.声明动态数组

上面声明数组的两种方式都是在初始化的时候直接定好数组的长度的,也就是后面数组的长度是不允许被改变的,如果数组长度需要改变这时候就需要用到动态数组

1.引入System下面的Collection类库

image.png

2. 初始化动态数组

image.png

3.在动态数组中添加元素

image.png

4.在数组中指定位置添加元素

image.png

5.删除数组中元素

image.png

四.字符串的相关方法

1.遍历字符串

字符串是一串字符组成,相当于可以理解成字符串数组,然后每个字符是数组中的元素,也就是说我们可以使用for循环去遍历字符串

image.png

2.将字符串中的字母转大写

image.png

3.将字符串中字母转小写

image.png

4.去掉字符串的首尾空格

  1. 去掉首尾空格

image.png

  1. 去掉前面部分的空格 TrimStart()
  2. 去掉尾部的空格 TrimEnd()

5.将字符串分割

image.png

五.练习题

  1. 练习题一

image.png

            //第一次可以喝364瓶可乐,剩下364空瓶
            //第二次可以换364/3瓶,剩下364/3+364%3
            Console.WriteLine("请输入可乐的瓶数");
            int bottleNum =Convert.ToInt32(Console.ReadLine());
            int drinkNum =bottleNum;
            int emptyNum = bottleNum;
            while (emptyNum>2)
            {
                drinkNum += emptyNum / 3;//第一次喝的瓶数  每次循环会换一次瓶
                emptyNum = emptyNum / 3 + emptyNum % 3;//剩下的空瓶等于喝完的瓶子,还有上一次不能换的瓶子
            }
            Console.WriteLine("一共可以喝{0}瓶可乐,有{1}个空瓶",drinkNum,emptyNum);
  1. 练习题二

image.png

            char[] charArray = Console.ReadLine().ToCharArray();//转成字符数组
            for (int i = 0; i < charArray.Length; i++)
            {
                if ((charArray[i] >= 'a' && charArray[i] <= 'z') || (charArray[i] >= 'A' && charArray[i] <= 'Z'))
                {
                    if ('w' < charArray[i] || 'W' < charArray[i] && charArray[i] < 'Z')//判断特殊情况 w到z
                    {
                        charArray[i] = (char)(charArray[i] - 23);
                    }
                    else
                    {
                        charArray[i] = (char)(charArray[i] + 3);
                    }
                }
            }
            Console.WriteLine(String.Join("", charArray));

2.jpg

六.本节课代码截图

image.png

image.png

3.jpg


/*
            Console.WriteLine("sdfd" + 1);//会将1转成字符串,不需要我们手动去强转,这种方式我们叫隐式类型转换
            //强转  Convert.ToString()    (String)值
            Console.WriteLine(Convert.ToInt32("1") + 2);
            double num1 = 1.3;
            int num =(int)num1;
            Console.WriteLine(num);
            */
            /*
            //数组
            int[] intArray1= { 1, 2, 3 };//数组的长度是不是固定的?就是固定的
            int[] intArray2 = new int[4];
            //表示数组的长度是4,默认每一个下标对应的值为0,每一个值都有一个编号从0开始,索引,通过编号找到对应的值
            Console.WriteLine(intArray2[3]);
            int[] intArray3 = new int[3] {1,2,3};
            intArray2[3] = 4;
            Console.WriteLine(intArray2[3]);
            //for循环遍历数组          foreach
            foreach (int i in intArray1) //拿不到目标
            {
                Console.WriteLine(i);
            }
            for (int i = 0; i < intArray2.Length; i++)
            {
                Console.WriteLine(intArray2[i]);
            }
            */


            /*
            //声明一个动态数组
            ArrayList arrayList = new ArrayList() { 1,2,34,34,35};
            arrayList.Add(67);//往数组中添加一个元素
            arrayList.Insert(0, 10);//往下标为0的位置添加元素
            arrayList.Remove(1);//删除的是列表中的“1”,不是对应下标
            foreach (int i in arrayList)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine(arrayList.Count);
            Console.WriteLine(arrayList.Capacity);
            */

            /*
            string str1 = "   abcdefg   ";
            str1 = "   abcdefge   ";//与上面不一样,这是新开辟的空间,旧的值被释放。
            foreach (char i in str1)
            {
                Console.WriteLine(i);
            }
            for (int i = 0; i < str1.Length; i++)
            {
                Console.WriteLine(str1[i]);
            }
            str1= str1.ToUpper();//返回了一个新的字符串
            str1= str1.ToLower();


            //截取字符串
            //str1=str1.Substring(0,3);
            //第一个参数是截取的初始下标位置  后面是截取的长度0,1,2
            str1 = str1.TrimStart();//Trim,TrimEnd,TrimStart "去掉空格"
            string str2 = "小明-181343443-男";
            string[] personInfo = str2.Split("-");//通过字符“-”进行分割

            foreach (string i in personInfo)
            {
                Console.WriteLine(i + " ");
            }
            //有分割,有没有合并     join(“,”,数组)
            str2 = string.Join(",", personInfo);//合并
            Console.WriteLine(str2);

            Console.WriteLine(str1);
            */


            /*
            //第一次可以喝364瓶可乐,剩下364空瓶
            //第二次可以换364/3瓶,剩下364/3+364%3
            Console.WriteLine("请输入可乐的瓶数");
            int bottleNum =Convert.ToInt32(Console.ReadLine());
            int drinkNum =bottleNum;
            int emptyNum = bottleNum;
            while (emptyNum>2)
            {
                drinkNum += emptyNum / 3;//第一次喝的瓶数  每次循环会换一次瓶
                emptyNum = emptyNum / 3 + emptyNum % 3;//剩下的空瓶等于喝完的瓶子,还有上一次不能换的瓶子
            }
            Console.WriteLine("一共可以喝{0}瓶可乐,有{1}个空瓶",drinkNum,emptyNum);
            */


            char[] charArray = Console.ReadLine().ToCharArray();//转成字符数组
            for (int i = 0; i < charArray.Length; i++) 
            {
                if ((charArray[i] >= 'a' && charArray[i] <= 'z') || (charArray[i] >= 'A' && charArray[i] <= 'Z'))
                {
                    if ('w' < charArray[i] || 'W' < charArray[i] && charArray[i]<'Z')//判断特殊情况 w到z
                    {
                        charArray[i] =(char)(charArray[i]-23);
                    }
                    else
                    {
                        charArray[i] = (char)(charArray[i]+3);
                    }
                }
            }
            Console.WriteLine(String.Join("",charArray));