vr引擎设计-C#基础第五天

122 阅读3分钟

一、冒泡排序

1、有一组杂乱的数据,要求从小到大进行排序,这时候我们可以从下标为0的元素开始,相邻两两进行比对,如果前一个元素比后一个元素大,则将前一个元素和后一个元素交换值,经过第一轮比对之后,我们可以知道最后一个元素一定是数组中最大的值,接下来再比对前n-1个元素,以此类推,每次都会得到一个最大值,最后数组就从下到达进行排序了。

image.png 2、使用Array.Sort(数组名)对数组进行排序

image.png

二、练习题

1、练习一

image.png

image.png

image.png

image.png

2、练习二

image.png

image.png

image.png

3、练习三

image.png

image.png

4、练习四

image.png

image.png

image.png

5、练习五

给定一串只包含小写字母的字符串,计算每个字母在字符串中出现的次数,然后输出只出现2次的字母的个数

image.png 6、练习六

image.png

image.png

image.png

三、代码展示

using System;
using System.ComponentModel;
using System.Security.Cryptography.X509Certificates;

namespace demo0929
{
    class Program
    {
        static void Main(string[] args)
        {
            /*//例子:任意输入对应瓶数的可乐,输出对应喝了多少瓶,剩下几个空瓶(0 <= x <= 2)
            //先定义总的瓶数  假设全部喝完
            Console.WriteLine("请输入可乐瓶的数量:");
            int he = Convert.ToInt32(Console.ReadLine());
            int ping = he; //全部喝完剩下的空瓶
            while (ping > 2)
            {
                he += ping / 3; //第一次喝完去换,又可以喝ping/3瓶
                //计算剩下的空瓶
                ping = ping / 3 + ping % 3;
            }
            Console.WriteLine("一共可以喝{0}瓶可乐,剩下{1}空瓶", he, ping);*/

            /*//例子:字符串加密
            char[] sList = Console.ReadLine().ToCharArray();
            //将数组通过某个字符连接成字符串string.Join(连接符,数组)最后返回一个字符串   和Split相反
            string[] stList = { "1", "2", "3", "4" };
            Console.WriteLine(string.Join("-", stList));
            for (int i = 0; i < sList.Length; i++)
            {
                if (('a' <= sList[i] && sList[i] <= 'z') || ('A' <= sList[i] && sList[i] <= 'Z'))
                {
                    if (('x' <= sList[i] && sList[i] <= 'z') || ('X' <= sList[i] && sList[i] <= 'Z'))
                    {
                        sList[i] = Convert.ToChar(sList[i] - 23);
                    }
                    else
                    {
                        sList[i] = (char)(sList[i] + 3);
                    }
                }
            }
            Console.WriteLine(string.Join("", sList));*/


            /* //冒泡排序
             *//*假设有6个数 循环5次 5轮
             比对每一轮的数 两两比对
             上一轮已经确定好了一个数 下标就要往前挪一位
              6 - 1 - 轮数*//*
              int[] num = { 17, 3, 5, 25, 1, 73, 2 };
             for (int i = 0; i < num.Length - 1; i++) //只执行num.length-1次
             {
                 for (int j = 0; j < num.Length - 1 - i; j++)  //比对每一轮的数,相邻两两进行比对
                 {
                     //定一个中间值
                     int temp = num[j];
                     if (num[j] > num[j + 1])
                     {
                         num[j] = num[j + 1];
                         num[j + 1] = temp;
                     }
                 }
             }
             Console.WriteLine(String.Join(" ", num));*/

            /*//使用Array.Sort(数组名)对数组进行排序
            int[] num = { 2, 3, 4, 5, 62, 65, 8, 4 };
            Array.Sort(num);    //会改变原来数组
            Console.WriteLine(String.Join(" ", num));*/

            /*Console.WriteLine("请输入一组用空格隔开的数据:");
            string str = Console.ReadLine();   //获取控制台输入的一组数据
            string[] strArray = str.Split(" ");     //将数字用空格分割成数组的元素
            int[] numArray = new int[strArray.Length];      //创建一个整型数组
            for (int i = 0; i < strArray.Length; i++)        //遍历,给numArray赋值
            {
                numArray[i] = Convert.ToInt32(strArray[i]);
            }
            Array.Sort(numArray);       //给数组排好序
            //接下来,输入你要插入的数
            int num = Convert.ToInt32(Console.ReadLine());
            //定义一个变量来记录插入的位置下标
            int numIndex = 0;
            //循环有序的数组,判断num在不在元素中间
            for (int i = 0; i < numArray.Length - 1; i++)
            {
                if (numArray[i] <= num && num <= numArray[i + 1])
                {
                    numIndex = i + 1;
                    break;
                }
            }
            //特殊情况 大于最后一个值
            if (num > numArray.Length - 1)
            {
                numIndex = numArray.Length;
            }
            //创建一个新的数组
            int[] num2Array = new int[numArray.Length + 1];
            //循环遍历  开始赋值
            //0到numIndex-1  直接就是和第一个数组中的元素一样 下标位置也是一样
            for (int i = 0; i < numIndex; i++)
            {
                num2Array[i] = numArray[i];
            }
            //numIndex  直接插入num 的值
            num2Array[numIndex] = num;
            //numIndex+1 到最后一个下标的位置
            for (int i = numIndex + 1; i < num2Array.Length; i++)
            {
                num2Array[i] = numArray[i - 1];
            }
            Console.WriteLine(string.Join(" ", num2Array));*/


            /*//合法的变量名 首个字符不能是数字  有数字字母下划线组成  输入一个字符串判断那它是不是一个合法的标识符
            Console.WriteLine("请输入一个字符串:");
            string str2 = Console.ReadLine();
            //创建一个中间变量来记录是否是合法的标识符
            Boolean isleagal = false;
            //循环遍历每一个字符
            for (int i = 0; i < str2.Length; i++)
            {
                if (48 <= str2[i] && str2[i] <= 57 || 65 <= str2[i] && str2[i] <= 90 || 97 <= str2[i] && str2[i] <= 122 || str2[i] == 95)
                {
                    if (i == 0 && 48 <= str2[i] && str2[i] <= 57)
                    {
                        break;
                    }
                    isleagal = true;

                }
                else
                {
                    isleagal = false;
                    break;
                }
            }
            if (isleagal)
            {
                Console.WriteLine("合法");
            }
            else
            {
                Console.WriteLine("不合法");
            }*/


            /*//回文串:正读和反读都一样的字符串,比如noon
            //先输入一个字符串
            string str3 = Console.ReadLine();
            //先定义一个变量 记录是否是回文串
            Boolean isPalindrome = true;
            //循环字符串
            for (int i = 0; i < str3.Length / 2; i++)
            {
                if (str3[i] != str3[str3.Length - i - 1])
                {
                    isPalindrome = false;
                    break;
                }

            }
            if (isPalindrome)
            {
                Console.WriteLine("是回文串");
            }
            else
            {
                Console.WriteLine("不是回文串");
            }*/


            /*//记录气温连续下降的天数
            string str4 = Console.ReadLine();
            string[] strArray = str4.Split(" ");
            int[] temp = new int[strArray.Length]; //气温数组
                                                   //给气温数组赋值
            for (int i = 0; i < strArray.Length; i++)
            {
                temp[i] = Convert.ToInt32(strArray[i]);
            }
            //创建一个变量记录每次连续降温的天数
            int count = 1;
            //创建一个变量记录最大的连续天数
            int maxDays = 1;
            //开始循环遍历气温值
            for (int i = 0; i < temp.Length - 1; i++)
            {
                //后一个比前一个小,就count++
                if (temp[i] > temp[i + 1])
                {
                    count++;
                }
                else
                {
                    //先于最大值对比 如果大就给maxDays重新赋值
                    if (count > maxDays)
                    {
                        maxDays = count;
                    }
                    //中断了 重新给coun赋值为1
                    count = 1;

                }
            }
            //因为如果最长连续天数刚好在最后,循环结束是没有更新maxDays中的值
            if (count > maxDays)
            {
                maxDays = count;
            }
            //输出最长的连续天数
            Console.WriteLine(maxDays);*/


            //先定义一个变量来存预算
            string str =Console.ReadLine();
            string[] strArrray = str.Split(" ");
            int[] burget = new int[strArrray.Length];
            //定义一个变量记录给妈妈的钱
            int mom = 0;
            //定义一个变量记录小明剩下的钱
            int self = 0;
            //定义一个变量记录小明最终的钱,包括妈妈存的
            int all=0;
            //定义一个变量  表示有没有超出预算 默认没有
            Boolean isOut = false;
            //定义一个变量记录超出预算的月份
            int m = 1;
            //赋值
            for(int i = 0; i < strArrray.Length; i++)
            {
                burget[i] = Convert.ToInt32(strArrray[i]);
            }

            //遍历数组
            for(int i=0; i<burget.Length; i++)
            {
                if(300 + self - burget[i] > 0)
                {
                    mom += ((300 + self - burget[i]) / 100) * 100;//给妈妈的钱
                                                                  //当前月份剩下的钱
                    self = 300 + self - burget[i] - ((300 + self - burget[i]) / 100) * 100;
                    if (self < 0)
                    {
                        isOut = true;
                        m = i + 1;
                        break;
                    }
                }
                else
                {
                    m = i + 1;
                    isOut = true;
                    break;
                }

            }
            //判断有没有超出预算
            if (isOut)
            {
                Console.WriteLine(-m);
            }
            else
            {
                Console.WriteLine("小明实际总的钱为{0}元", self + mom * 1.2);
            }



        }
    }
}