《面向对象程序设计C 数组与自定义类型.pptx》由会员分享,可在线阅读,更多相关《面向对象程序设计C 数组与自定义类型.pptx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1、数数组组1 1数组属于引用类型,数组变量中存放的是数组的引用。数组属于引用类型,数组变量中存放的是数组的引用。l1)一维数组声明与访问一维数组声明与访问一维数组声明一维数组声明格式:格式:类修饰符类修饰符类型名称类型名称数组名称数组名称;例如:例如:inta;floatfs;数组变量是引用,需要实例化才能使用,实例化一维数组的格式:数组变量是引用,需要实例化才能使用,实例化一维数组的格式:数组名称数组名称new类型名称类型名称无符号整形表达式无符号整形表达式;例如:例如:intvals=newint20;floatvalfs=newint-20;doublevalds;valds=newd
2、ouble5;第1页/共23页数组可以初始化动态初始化格式为:数组名称 new 类型名称无符号整形表达式数值1,数值2,.;例如:int valis=new int53,5,7;float valfs;valfs=new float33.2f,2.3f,8.9f;静态初始化格式为:类修饰符类型名称数组名称 数值1,数值2,.;例如:double valds=2.3,5.8,7.9;在C#中,数组名是一个引用变量,可以和另一个类型相同的数组名相互赋值,如下列代码所示。int grade=new int50,60,70,80,90;/创建一维整型数组grade int score=grade;/此
3、时score与grade代表的是同一个数组。第2页/共23页using System;namespace Sample01 class Program static void Main(string args)string strInput;Console.WriteLine(请输入十个整数:);strInput=Console.ReadLine();string strValues=strInput.Split();int intValues=new intstrValues.Length;for(int i=0;i strValues.Length;i+)intValuesi=int.Pa
4、rse(strValuesi);3 32)一维数组应用举例例:从键盘输入十个整数存放到数组中,然后按由小到大的顺序排序,最后在屏幕上输出。第3页/共23页/排序排序for(inti=0;iintValues.Length-1;i+)for(intj=0;jintValuesj+1)inttemp=intValuesj;intValuesj=intValuesj+1;intValuesj+1=temp;for(inti=0;iintValues.Length;i+)Console.Write(0,5,intValuesi);练习.:从键盘输入个实数存放到数组中,然后按由大到小的顺序排序,在屏幕上
5、输出;从键盘输入一个实数,如果该数在数组中存在则删除并输出删除后的结果。第4页/共23页foreach访问访问数组元素数组元素语法格语法格式:式:foreach(类型名称类型名称变量名变量名in数组名称数组名称)循循环体环体例:输出数组中的所有元素值using System;namespace Sample01 class Program static void Main(string args)int valis=new int3,5,7,9,10,8,22,12,90,33;foreach(int a in valis)Console.Write(0,8,a);第5页/共23页)二维数组声
6、明与访问二维数组声明与访问二维数组声明的语法格式如下:二维数组声明的语法格式如下:类修饰符类修饰符 类型名称类型名称,数组名;数组名;数组的两个维之间用逗号隔开,也就是说一个数组的两个维之间用逗号隔开,也就是说一个逗号表示两个维,依次类推,如果有逗号表示两个维,依次类推,如果有n n个逗号,个逗号,则表示则表示n+1n+1维。维。例如:例如:int,score;/一个存放多名学生多门一个存放多名学生多门课程的成绩的二维数组课程的成绩的二维数组string,book;/一个存放多层书架上的多一个存放多层书架上的多本书籍名称的二维数组本书籍名称的二维数组创建二维数组的语法格式如下:创建二维数组的语
7、法格式如下:二维数组名二维数组名=new=new 数据类型数据类型 数组长度数组长度1 1,数,数组长度组长度22;这里的数组长度这里的数组长度1 1和数组长度和数组长度2 2分别表示二维分别表示二维数组第一维和第二维的长度,它们必须是常量或数组第一维和第二维的长度,它们必须是常量或常量表达式,或者是已经赋值的变量。常量表达式,或者是已经赋值的变量。例如:例如:int,score=newint5,3;string,book=newstring5,10;第6页/共23页二维数组初始化二维数组初始化在声明二维数组的同时创建数组,并在声明二维数组的同时创建数组,并用指定的值初始化数组元素。为每行指定
8、的值放用指定的值初始化数组元素。为每行指定的值放在花括号在花括号中,而所有行的值再放在外围的一中,而所有行的值再放在外围的一个花括号个花括号中。中。以下代码是创建一个二维数组以下代码是创建一个二维数组scorescore,来存,来存放三个学生的四门课程的成绩。放三个学生的四门课程的成绩。int,score=new int3,4 int,score=new int3,4 93,78,83,90,92,73,63,82,53,83,93,693,78,83,90,92,73,63,82,53,83,93,60;0;内部三个大括号中的数据分别为三行的数组内部三个大括号中的数据分别为三行的数组元素赋初
9、值,元素赋初值,3 3个内部大括号内的元素的个数必须个内部大括号内的元素的个数必须相同。相同。int,score=newint3,493,78,90,92,73,63,82,53,83,93,60;第7页/共23页下列代码是创下列代码是创建一个二维数组建一个二维数组bookbook,来,来保存两层书架上放置的书名。保存两层书架上放置的书名。string,book=new string,book=new string2,3 Cstring2,3 C语言程语言程序设计序设计,VB,VB编程基础编程基础,Delphi,Delphi编程基础编程基础,政治经济学政治经济学,货币银行学货币银行学,市场经济
10、学市场经济学;new new 运算符后可以不指运算符后可以不指定行和列的长度定行和列的长度,但如果要但如果要指定长度,则必须与花括号指定长度,则必须与花括号中用作初始化的数据中用作初始化的数据的行数和列数保持一致的行数和列数保持一致,如如下列代码所示。下列代码所示。string,book=Cstring,book=C语言程序设计语言程序设计,VB,VB编程基编程基础础,Delphi,Delphi编程基础编程基础,政治经济学政治经济学,货币银行货币银行学学,市场经济学市场经济学;book book数组表示的元素可数组表示的元素可以用表以用表6-16-1来表示。来表示。市场经济学货币银行学政治经济
11、学1Delphi编程基础VB编程基础C语言程序设计0210书序号书架号表6-1 book数组中的元素第8页/共23页例例如如:实实现现*乘乘法法表表using System;namespace Sample02 class Program static void Main()int,x=new int9,9;for(int i=0;i 9;i+)for(int j=0;j 9;j+)xi,j=(i+1)*(j+1);for(int i=0;i 9;i+)for(int j=0;j 9;j+)Console.Write(0,5:d,xi,j);Console.WriteLine();Consol
12、e.ReadLine();4)二维数组应用举例练习6.2:求5*6矩阵中的最大值及其所在的位置第9页/共23页4、数组为参数、数组为参数由于数组为引用类型,由于数组为引用类型,当整个数组作为参数时,当整个数组作为参数时,按引用传递。按引用传递。数组作为方法形参时的定数组作为方法形参时的定义格式:义格式:public返回类型返回类型方法名方法名称称(元素类型元素类型数组名称数组名称)方法体方法体 调用时:调用时:方法名称方法名称(数组名数组名);例如:定义一个方法把双例如:定义一个方法把双精度一维数组中所有元素精度一维数组中所有元素按由小到大的顺序排序,按由小到大的顺序排序,在主程序中接收数据和
13、输在主程序中接收数据和输出排序后的结果。出排序后的结果。第10页/共23页usingSystem;namespaceSample01classProgramstaticvoidOrder(doublevals)/排序for(inti=0;ivals.Length-1;i+)for(intj=0;jvalsj+1)doubletemp=valsj;valsj=valsj+1;valsj+1=temp;第11页/共23页staticvoidMain(stringargs)stringstrInput;Console.WriteLine(请输入十个实数:);strInput=Console.Read
14、Line();stringstrValues=strInput.Split();doublevals=newdoublestrValues.Length;for(inti=0;istrValues.Length;i+)valsi=double.Parse(strValuesi);Order(vals);for(inti=0;ivals.Length;i+)Console.Write(0,5,valsi);第12页/共23页5、params关键字关键字在数组做方法形参定义时,加上在数组做方法形参定义时,加上params关键字关键字修饰,使调用的时候,实参为数组名称,或者直接提供修饰,使调用的时候
15、,实参为数组名称,或者直接提供一组数据。一组数据。例如:定义一个方法求双精度数组中所有元素的和,在例如:定义一个方法求双精度数组中所有元素的和,在程序中求已存在的程序中求已存在的5个双精度浮点数的和值。个双精度浮点数的和值。usingSystem;namespaceSample01classProgramstaticdoubleSum(paramsdoublevals)doublesum=0;foreach(doubledinvals)sum+=d;returnsum;staticvoidMain(stringargs)doubledsum=Sum(2.3,8.7,98.2,82.3,7.2)
16、;Console.WriteLine(sum=0,dsum);第13页/共23页2、自自定定义义数数据据类类型型1414自定义数据类型主要指结构体和枚举类型。自定义数据类型主要指结构体和枚举类型。l1)结构体结构体结构体是一种构造数据类型结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体用途:把不同类型的数据组合成一个整体-自定义数据类型自定义数据类型结构体类型定义格式:结构体类型定义格式:struct 结构体类型名 public 类型标识符 成员名;public类型标识符 成员名;.第14页/共23页例 :structstudentpublicintnum;publicstring
17、name;publiccharsex;publicintage;publicfloatscore;publicstringaddr;结构体可嵌套结构体可嵌套例例:structdatepublicintmonth;publicintday;publicintyear;structstudentpublicintnum;publicstringname;publicdatebirthday;第15页/共23页结构体变量的使用结构体变量的使用变量定义格式:变量定义格式:结构体类型名结构体类型名变量名变量名1,变量名,变量名2,.;例如:例如:studentstu1,stu2;结构体变量不能整体引用结
18、构体变量不能整体引用,只能引用变量成员,其只能引用变量成员,其规则是:规则是:结构体变量名结构体变量名.成员名成员名例如:例如:stu1.num=10;stu1.name=“王华王华”;stu1.birthday.year=2010;结构体数组的使用结构体数组的使用studentstu=newstudent5;Stu1.name=“李俊李俊“;第16页/共23页例 统计候选人选票namecountLiZhangWang000using System;namespace Sample01 struct person public string name;public int count;clas
19、s Program static void Main(string args)person leader=new person3;leader0.name=Li;leader1.name=Zhang;leader2.name=Wang;第17页/共23页inti,j;stringleader_name;for(i=1;i=4;i+)leader_name=Console.ReadLine();for(j=0;j3;j+)if(leader_name.Equals(leaderj.name)leaderj.count+;for(i=0;i3;i+)Console.WriteLine(0,8:1,
20、leaderi.name,leaderi.count);练习6.4:建立10名学生的信息表,每个学生的数据包括学号、姓名和三门课的成绩,求出每个学生的总分和平均分,在屏幕上把学生信息、总分和平均分输出出来。第18页/共23页2、枚举类型、枚举类型枚举类型(也称为枚举)为定义一组枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的可以赋给变量的命名整数常量提供了一种有效的方法。方法。枚举的声明格式枚举的声明格式:访问修辞符访问修辞符enum枚举名枚举名:基础类型基础类型枚举成员枚举成员例如,假设定义一个变量,该变量的值表示一周例如,假设定义一个变量,该变量的值表示一周中的一
21、天。中的一天。enumDaysSunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;枚举成员枚举成员枚举成员是该枚举类型的命名常数。任意两枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。个枚举成员不能具有相同的名称。示例示例:publicenumTimeofDay:uintMorning,Afternoon,Morning,Evening第19页/共23页默认情况下,枚举中每个元素的基础类型是默认情况下,枚举中每个元素的基础类型是int。第一个枚举数的值为第一个枚举数的值为0,后面每个枚举数的值依次,后面每个枚举数
22、的值依次递增递增1。例如:例如:enumDaysSat,Sun,Mon,Tue,Wed,Thu,Fri;默认的值就是为默认的值就是为enumDays0,1,2,3,4,5,想指定想指定默认的值为默认的值为1开始,就必须开始,就必须enumDaysStat=1,Sun=2,.例如:阅读下面程序例如:阅读下面程序 using System;public enum TimeofDay Morning,Afternoon,Evening 第20页/共23页classTeststaticvoidWriteGreeting(TimeofDaytimeofDay)switch(timeofDay)caseT
23、imeofDay.Morning:Console.WriteLine(“goodmorning”);break;caseTimeofDay.Afternoon:Console.WriteLine(“goodafternoon”);break;caseTimeofDay.Evening:Console.WriteLine(“goodevening”);break;staticvoidMain()WriteGreeting(TimeofDay.Morning);WriteGreeting(TimeofDay.Evening);WriteGreeting(TimeofDay.Afternoon);第21页/共23页结束第22页/共23页