C#之基础2---②(数组排序,数组反转,异常处理(throw ex与throw不同),堆栈区别,局部/全局变量,try catch)

      今天我们来分享一下VS视频中第二组第二讲的内容,这一讲对数组进行了再次的深入练习,并简单的介绍了异常处理的代码,以及方法的使用、局部变量与全局变量。

一、概念类

①、什么是方法?

一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个C#程序至少有一个带有Main方法的类。

要使用一个方法,我们需要:定义方法,调用方法。

②、什么是方法的重载?

方法重载就是方法名称重复,加载参数不同。

③、为什么要使用方法?

代码的复用,功能的复用。

④、什么是堆栈?

堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。

⑤、堆与栈的区别?

堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。

拓展详情:https://zhidao.baidu.com/question/1238648103637534499.html?fr=iks&word=%B6%D1%D5%BB&ie=gbk

⑤、catch 中throw 与throw ex 区别?

throw ex 这种写法会让C#重置异常的抛出点,throw并不会让C#重置异常的抛出点。

拓展详情:https://www.cnblogs.com/OpenCoder/p/6208284.html

⑥、try..catch..finally..语句处理流程?

try块出现异常则执行catch块的模块,然后再走到finally块。如果try块无异常则直接走到finally块。

⑦、在C语言中,局部变量与全局变量的区别?

局部变量只在本函数范围有效,在此函数以外不能使用这些变量;全局变量的有效范围则是从定义变量的位置开始到本源文件结束。全局变量是在整个程序都可以调用的变量,而局部变量只能在声明的函数里调用。

局部变量时程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;全局变量时程序运行时事先分配内容空间,当程序结束时释放内存。

二、导图类

三、代码类

①、数组的反转,倒序(Array方法,forr(for 循环的倒输出))

            int[] nums = new int[] { 5, 2, 102, -5, 98 };
            Array.Sort(nums);                               //一段代码就搞定了冒泡排序中的很多代码,从小到大
            Array.Reverse(nums);                            //对数组nums进行反转,其结果从大到小,但并非从大到小排序
            for (int i = 0; i < nums.Length; i++)
            {
                Console.Write(nums[i] + "\t");
            }
            for (int i = nums.Length - 1; i >= 0; i--)      //forr倒着输出,最后的结果为从大到小
            {
                Console.Write(nums[i] + "\t");              //在控制台上写入内容,并添加制表符
            }

            Console.ReadKey();

②、字符串数组的分割

例:对字符串数组进行分割,最终分割的格式为:路飞|索隆|娜美|乔巴|罗宾|乌索普...

            //对字符串数组进行分割,最终的格式为:路飞|索隆|娜美|乔巴|罗宾|乌索普...
               static void Main(string[] args)
        {
            string[] haiZei = new string[] { "路飞", "索隆", "娜美 ", "乔巴", "罗宾", "乌索普" };     //从方法里移动过来的,具有具体赋值的变量,变量名称要更改
            Program.StringName(haiZei);                            //调用StringName方法,并将数组haiZei中的内容传递给方法
            Console.ReadKey();
        }
 public static void StringName(string[] names)
        {
            //数组里面都是人的名字,分割成:
            string str = "";                                         //定义字符串变量
            {
                str += names[i] + "|";                               //str=str+names[i]+"|"
            }
            Console.WriteLine(str + names[names.Length - 1] + "...");//在控制台上写入
            Console.ReadKey();
        }

③、用方法判断是否为闰年

            Console.WriteLine("请输入年份");
            int year = Convert.ToInt32(Console.ReadLine());
            bool result=RunNian(year);
            if (result)                                     //如果result为true
            {
                Console.WriteLine("该年份为闰年");          //那么在控制台写入:该年份为闰年
            }
            else                                            //否则
            {
                Console.WriteLine("该年份不是闰年");        //控制台写入:该年份不是闰年
            }
            Console.ReadKey();
        }
        public static bool RunNian(int year)               
        {   //我的方法     
            bool result1 = year % 400 == 0;                 //定义布尔值result1,year除以400余数为零
            bool result2 = year % 4 == 0 && year % 100 != 0;//定义布尔值result2,year除以4余数为零,且除以100余数不为零
            bool result = result1 || result2;               //定义布尔值result,result1或者result2即可
            return result;

            //老师的方法:区别在于,老师把能简化到一行的代码都简化了,化繁为简!
            if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0)   
            {
                return true;
            }
            else
            {
                return false;
            }

④、传来字符串,返回数字

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入内容");                   //在控制台上写入内容 
            string str = Console.ReadLine();                   //从控制台上读取信息,并将其赋予给str变量
            int num=OutPutNumber(str);                         //调用OutPutNumber方法,并将参数传递给该方法。方法返回值将内容赋予给变量num
            Console.WriteLine(num);                            //在控制台上写入变量num的内容
            Console.ReadKey(); 
        }

        public static int OutPutNumber(string strNumber)
        {
            while(true)                                        //不知道要循环多少遍时,用while(true)
            {
                try                                            //尝试的进行下面的代码
                {
                    int number = int.Parse(strNumber);         //将从主函数中传递过来的参数进行类型转换
                    return number;                             //如果正确,则返回number。如果上面语句出错则直接跳转到catch中,根本不执行return number; 
                }
                catch                                          //如果抓取到错误,那么就执行以下大括号代码段
                {
                    Console.WriteLine("输入错误,请重新输入"); // 在控制台上写入内容
                    strNumber = Console.ReadLine();            //重新将输入的内容赋予变量
                }
                                                               //然后再从try开始循环
            }
         
        }
    }

⑤、try...catch...finally语句

        public static void Show()                                       //静态,在本类中调这个方法,可以直接方法名(),就可以使用。
        {
            Console.WriteLine("请输入数字");
            try                                                         //尝试走此段代码
            {
                int num = Convert.ToInt32(Console.ReadLine());         //将用在在控制台输入的内容转换为整数类型
            }
            catch (Exception ex)                                        //如果正确则跳过此过程,向下继续执行,如果错误则执行此过程
            {

                //console.writeline(ex.message);                        //提示系统错误信息
                //console.writeline("您输入的类型有误,请您输入数字");  //提示用户自定义错误信息
                throw;                                                  //直接跳过catch这段,进行下一段代码
            }
            finally                                                     //无论是否出现异常,都执行此段代码
            {
                Console.ReadKey();
                Console.ReadLine();
                Console.WriteLine();
            }
        }

⑥、用方法求最大值,最小值,平均数,平均数

 class Program
    {
        static void Main(string[] args)
        {
            //从一个整数数组中取出最大的整数,最小的整数,总和,平均值

            int[] number = new int[] { 5, 10, 25, 90, -5, 0 };
            int max = MaxArray(number);              //调用最大值的方法
            int min = MinArray(number);              //调用最小组的方法
            int avg = AvgArray(number);              //调用平均数的方法
            int sum = SumArray(number);              //调用求和方法
            Console.WriteLine("最大数为{0},最小数为{1},和为{2},平均数为{3}",max,min,avg,sum);
            Console.ReadKey();
        }
        public static int MaxArray(int[] nums)       //最大值方法
        {
            
            int max = int.MinValue;                  //定义最大值变量,为整数中的最小值
            for (int i = 0; i < nums.Length ; i++)   //for循环
            {
                max = nums[i] > max ? nums[i]:max;   //如果数组nums[i]大于max变量,那么将数组nums[i]的值赋予给max变量,反之则将max赋值给max
            }
            return max;                              //返回max变量的值
        }

        public static int MinArray(int[] nums)      //最小值方法
        {
            int min = int.MaxValue;                 //定义最小值变量,为整数中的最大值
            for (int i = 0; i < nums.Length; i++)
            {
                min = nums[i] < min ? nums[i] : min;//如果数组nums[i]小于min变量,那么将数组nums[i]的值赋予给min变量,反之则将min赋值给min
            }
            return min;                             //返回max变量的值
        }
        public static int AvgArray(int[] nums)     //平均数方法
        {
            int avg = 0;                           //定义变量,并赋予其初值
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];                    //sum=sum+nums[i]
            }
            avg = sum / nums.Length;               //平均数等于总和除以数组长度
            return avg;                            //返回avg变量的值
        }
        public static int SumArray(int[] nums)    //求和方法
        {
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];                   //sum=sum+nums[i]
            }
            return sum;                           //返回sum变量的值
        }
    }

     以上便是第二组第二讲的内容梳理,下一站走起^_^

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值