您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > C常量-枚举-结构-数组-方法与函数
第4章常量\枚举\结构\数组\方法\函数(函数的参数)4.1常量4.2枚举(字符串与枚举的转换)4.3结构4.4数组(冒泡排序)4.5方法(函数及参数)4.6方法的重载4.7ref与out参数1.常量取值不可改变的变量,只在初始化时可赋值,用const修饰。const类型常量名=常量值staticvoidMain(string[]args){constdoublePI=3.14;PI=3.20;}2.枚举定义了一种类型,并指定这种类型所可能的值。语法:enum自己的枚举类型{值1,值2,…}一般和类定义在同一级别。每个值都有一个默认编号,从0开始。枚举的用法:QQStatusstatus=QQStatus.online;和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。enumGender{male,female}enumQQStatus{online,offline,hidden}namespacemyfirst{enumGENDER{男,女}classProgram{staticvoidMain(string[]args){GENDERsex;sex=GENDER.男;Console.WriteLine(sex);Console.WriteLine((int)sex);Console.ReadKey();}}}举例:MessageBox.Show(aaaaa,bbbb,MessageBoxButtons.RetryCancel);F12转定义进行枚举查看//消息框包含“确定”按钮。OK=0,//消息框包含“确定”和“取消”按钮。OKCancel=1,//消息框包含“中止”、“重试”和“忽略”按钮。AbortRetryIgnore=2,//消息框包含“是”、“否”和“取消”按钮。YesNoCancel=3,字符串与枚举的转换publicenumGender{male,famale}//……Console.WriteLine(你的性别:{0}.,Gender.male.ToString());//字符串转换为枚举(Gender)(Enum.Parse(typeof(Gender),“male”));枚举一般和类定义在同一个级别(值不需加双引号,不可以是int类型,但可以强制转换为int)每一个值都对应一个数字(编号从0开始)典型的枚举类型:MessageBox.Show的参数(后面会学到)namespacemyfirst{enumGENDER{男=3,女=6}classProgram{staticvoidMain(string[]args){GENDERsex;strings=Console.ReadLine();try{sex=(GENDER)(Enum.Parse(typeof(GENDER),s));Console.WriteLine(键盘输入为:{0},sex);}catch{Console.WriteLine(输入错误!);}Console.ReadKey();}}}3.结构体为什么要使用结构?存储一个人的信息,可声明一组变量,若要存储多个人呢?例如c#中ColorPoint都是结构访问修饰符struct结构名{定义结构成员}publicstructPerson{publicstringName;publicintAge;publicstringHobby;publicintPopularity;publicvoidSayHi(){//….}}练习:定义一个结构类型Person,有三个成员,分别为姓名,性别,年龄声明两个Person类型的变量,分别表示张三男18岁/小兰女16岁namespacemyfirst{enumGENDER{男=3,女=6}publicstructPerson{publicstringName;publicGENDERsex;publicintAge;}classProgram{staticvoidMain(string[]args){Personp1,p2,p3;p1.Age=10;p2.Name=小李;p3.sex=GENDER.男;}}}4.数组统计每个学生的成绩,并计算全班的平均成绩,然后显示所有成绩。如何声明变量?好的解决方法,使用数组。数组保存多个值。几乎任意类型都可以声明数组。int[]nums={5,3,8};int[]nums=newint[3];int[]nums=newint[3]{5,3,8}//个数和声明数必须一致int[]nums=newint[5]{5,3,8}//错误int[]nums=newint[]{5,3,8}//正确,可以省略数组个字使用索引器访问指定编号位置的元素,访问数组元素:nums[0]、nums[1]。索引从0开始。数组的声明数组的赋值与取值常见问题:求平均值,求最大值,求和,排序(冒泡排序)namespacemyfirst{publicstructPerson{publicstringName;publicintAge;}classProgram{staticvoidMain(string[]args){Person[]P_all=newPerson[20];P_all[12].Age=18;Console.WriteLine(P_all.Length);for(inti=0;iP_all.Length;i++){Console.WriteLine(Person[{0}]={1},i,P_all[i].Age);}Console.ReadKey();}}}遍历数组常用的两种方法:int[]arr=newint[8]{1,2,3,4,5,6,7,8};foreach(intiinarr){Console.WriteLine(i);}for(inti=0;iarr.Length;i++){Console.WriteLine(arr{0}={1},i,arr[i]);}Console.ReadKey();练习:练习1:从一个整数数组中取出最大的整数练习2:计算一个整数数组的所有元素的和。练习3:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世”练习4:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1,如果元素是0,则不变。练习5:将一个字符串数组的元素的顺序进行反转。{“3”,“a”,“8”,“haha”}{“haha”,“8”,“a”,“3”}。第i个和第length-i-1个进行交换。求平均值,求最大值,求和实验:冒泡排序法inti,j,temp;int[]a={22,44,12,4,234,54,65,34};for(i=0;ia.Length-1;i++){for(j=0;ja.Length-1-i;j++){if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}for(i=0;ia.Length;i++){Console.WriteLine(a[i]);}Console.ReadKey();try-catch的使用(简单用法)try{有可能出现错误的代码;}catch{如果try中的代码出现异常,则进去catch中}方法的定义及调用方法的定义:[访问修饰符][static]返回值类型方法名([参数]){方法体;}命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义。方法一般定义在类中。方法的调用对于静态方法,若在同一个类中,直接写名字调用。一般:类名.方法名();return可以立即退出所在的方法。常用的已经学过的方法:Console.WriteLine();Console.Write();Console.ReadLine();Console.ReadKey();int.Parse(string);Convert.ToInt32(string);对于由static修饰的方法,使用:类名.方法名()调用.如果在类中调用自己的由static修饰的方法,可以省略类名。变量的作用域(只讲局部变量)在方法中定义的变量为局部变量。阅读下面的程序,说一下输出结果是多少?变量的作用域(生存周期)在方法中定义的变量称为局部变量其作用域从定义开始,到其所在的大括号结束为止。在一个方法中想要访问另一个方法中的变量,怎么办?两种解决方法:参数和返回值方法中的return语句,导致函数立即返回。在返回值为void的函数中return;在返回值非void的函数中return值;staticvoidMain(string[]args){inta=3;intb=PR(a);Console.WriteLine(a={0}PR(a)={1},a,b);Console.ReadKey();}publicstaticintPR(inta){returna+=1;}练习:写一个方法1.查找两个整数中的最大值:intMax(inti1,inti2)2.计算输入数组的和:intSum(int[]values)思考:即然Console.WiteLine()是方法,那么为什么WiteLine的参数可以是字符串类型,也可以是数字类型,还可以是布尔类型char类型呢?为什么要有方法的重载?思考:方法只能返回一个值,当需要返回多个值时怎么办?例如:写一个方法,计算一个int类型数组中每个元素的总和、最大值与最小值?方法的out参数和ref参数(*)函数参数默认是值传递的,也就是“复制一份”,例子:intage=20;IncAge(age);Console.WriteLine(age={0},age);ref:可以改变外部参数的值,必须初始化out:则是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。例:int.TryParse。out:注重于传出值ref:可以传出和传入refstaticvoidMain(string[]args){inta=3;intb=PR(refa);Console.WriteLine(a={0}PR(a)={1},a,b);Console.ReadKey();}publicstaticintPR(refinta){returna+=1;}outstaticvoidMain(string[]args){inta=3;intb=PR(outa);Console.WriteLine(a={0}PR(a)={1},a,b);Console.ReadKey();}publicstaticintPR(outinta){a=1;returna;}ref、out小结:在传参的过程中,如果参数有ref和out修饰,参数的改变,调用者方法中参数也会随之改变。out:注重于传出值ref:可以传出和传入方法的练习:用方法实现找出一个int类型数组中总和、最大值、最小值。用方法实现找出一个int类型数组中总和、最大值、最小值。staticvoidMain(string[]args){int[]AA={21,4,13,5,6,37,8,29};intmax=0,min=0,sum=0;sum=reMin_Max(AA,outmax,outmin);Console.WriteLine(总和={0}最大值={1}最小值={2},sum,max,min);Console.ReadKey();}//用方法实现找出一个int类型数组中最大值和最小值。publicstaticintreMin_Max(int[]numbers,outintmax,outintmin){intsum=0;max=numbers[0];min=numbers[0];for(inti=0;inumbers.Length;i++){sum+=numbers[i];if(numbers[i]max){max=
本文标题:C常量-枚举-结构-数组-方法与函数
链接地址:https://www.777doc.com/doc-2908526 .html