资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 数组与自定义类型,李晓勇 13858030242,1、数组,数组属于引用类型,数组变量中存放的是数组的引用。 1)一维数组声明与访问 一维数组声明格式: 类修饰符类型名称 数组名称; 例如: int a; float fs; 数组变量是引用,需要实例化才能使用,实例化一维数组的格式: 数组名称 new 类型名称无符号整形表达式; 例如: int vals = new int20; float valfs = new int-20; double valds; valds = new double5;,数组可以初始化 动态初始化格式为: 数组名称 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;/此时score与grade代表的是同一个数组。,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.Parse(strValuesi);,2)一维数组应用举例 例:从键盘输入十个整数存放到数组中,然后按由小到大的顺序排序,最后在屏幕上输出。,/排序 for(int i = 0; i intValuesj + 1) int temp = intValuesj; intValuesj = intValuesj + 1; intValuesj + 1 = temp; for (int i = 0; i intValues.Length; i+) Console.Write(0,5, intValuesi); ,练习.:从键盘输入个实数存放到数组中,然后按由大到小的顺序排序,在屏幕上输出; 从键盘输入一个实数,如果该数在数组中存在则删除并输出删除后的结果。,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); ,)二维数组声明与访问 二维数组声明的语法格式如下: 类修饰符类型名称 , 数组名; 数组的两个维之间用逗号隔开,也就是说一个逗号表示两个维,依次类推,如果有n个逗号,则表示n+1维。 例如: int, score;/一个存放多名学生多门课程的成绩的二维数组 string, book;/一个存放多层书架上的多本书籍名称的二维数组 创建二维数组的语法格式如下: 二维数组名=new 数据类型数组长度1,数组长度2; 这里的数组长度1和数组长度2分别表示二维数组第一维和第二维的长度,它们必须是常量或常量表达式,或者是已经赋值的变量。 例如: int, score=new int5,3; string, book = new string5, 10;,二维数组初始化 在声明二维数组的同时创建数组,并用指定的值初始化数组元素。为每行指定的值放在花括号中,而所有行的值再放在外围的一个花括号中。 以下代码是创建一个二维数组score,来存放三个学生的四门课程的成绩。 int, score=new int3,4 93,78,83,90,92,73,63,82,53,83,93,60; 内部三个大括号中的数据分别为三行的数组元素赋初值,3个内部大括号内的元素的个数必须相同。 int, score = new int3, 4 93, 78, 90 , 92, 73, 63, 82 , 53, 83, 93, 60 ;,下列代码是创建一个二维数组book,来保存两层书架上放置的书名。 string, book=new string2,3 C语言程序设计,VB编程基础,Delphi编程基础,政治经济学,货币银行学,市场经济学; new 运算符后可以不指定行和列的长度,但如果要指定长度,则必须与花括号中用作初始化的数据的行数和列数保持一致,如下列代码所示。 string, book=C语言程序设计,VB编程基础,Delphi编程基础,政治经济学,货币银行学,市场经济学; book数组表示的元素可以用表6-1来表示。,例如:实现*乘法表,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(); Console.ReadLine(); ,4)二维数组应用举例,练习6.2:求5*6矩阵中的最大值及其所在的位置,4、数组为参数 由于数组为引用类型,当整个数组作为参数时,按引用传递。 数组作为方法形参时的定义格式: public 返回类型 方法名称(元素类型 数组名称) 方法体 调用时: 方法名称(数组名); 例如:定义一个方法把双精度一维数组中所有元素按由小到大的顺序排序,在主程序中接收数据和输出排序后的结果。,using System; namespace Sample01 class Program static void Order(double vals) /排序 for (int i = 0; i valsj + 1) double temp = valsj; valsj = valsj + 1; valsj + 1 = temp; ,static void Main(string args) string strInput; Console.WriteLine(请输入十个实数:); strInput = Console.ReadLine(); string strValues = strInput.Split( ); double vals = new doublestrValues.Length; for (int i = 0; i strValues.Length; i+) valsi = double.Parse(strValuesi); Order(vals); for (int i = 0; i vals.Length; i+) Console.Write(0,5, valsi); ,5、params 关键字 在数组做方法形参定义时,加上params关键字修饰,使调用的时候,实参为数组名称,或者直接提供一组数据。 例如:定义一个方法求双精度数组中所有元素的和,在程序中求已存在的5个双精度浮点数的和值。 using System; namespace Sample01 class Program static double Sum(params double vals) double sum = 0; foreach (double d in vals) sum += d; return sum; static void Main(string args) double dsum = Sum(2.3, 8.7, 98.2, 82.3 , 7.2); Console.WriteLine(sum = 0, dsum); ,2、自定义数据类型,15,自定义数据类型主要指结构体和枚举类型。 1)结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-自定义数据类型 结构体类型定义格式:,struct 结构体类型名 public 类型标识符 成员名; public类型标识符 成员名; . ,例 : struct student public int num; public string name; public char sex; public int age; public float score; public string addr; 结构体可嵌套 例: struct date public int month; public int day; public int year; struct student public int num; public string name; public date birthday; ,结构体变量的使用 变量定义格式: 结构体类型名 变量名1,变量名2,.; 例如: student stu1, stu2; 结构体变量不能整体引用,只能引用变量成员,其规则是: 结构体变量名.成员名 例如: stu1.num=10; stu1. name =“王华”; stu1.birthday.year = 2010; 结构体数组的使用 student stu = new student5; Stu1.name = “李俊“;,例 统计候选人选票,using System; namespace Sample01 struct person public string name; public int count; class Program static void Main(string args) person leader = new person3; leader0.name = Li; leader1.name = Zhang; leader2.name = Wang;,int i, j; string leader_name; for (i = 1; i = 4; i+) leader_name = Console.ReadLin
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号