收藏 分销(赏)

教学研究数组和指针.pptx

上传人:a199****6536 文档编号:4256301 上传时间:2024-08-31 格式:PPTX 页数:33 大小:356.32KB
下载 相关 举报
教学研究数组和指针.pptx_第1页
第1页 / 共33页
教学研究数组和指针.pptx_第2页
第2页 / 共33页
教学研究数组和指针.pptx_第3页
第3页 / 共33页
教学研究数组和指针.pptx_第4页
第4页 / 共33页
教学研究数组和指针.pptx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、第第5章章 数组和指针数组和指针一维数组的声明、实例化、初始化和访问多维数组的声明、实例化、初始化和访问数组的基本操作和排序System.Array类的使用C#语言中不安全代码的基本概念C#语言中指针的使用 195619601978198219901998a0a1a2a3a4a5数组是一些具有相同类型的数据按一定顺序组成的序列初步认识数组问题:输入100个学生的成绩,计算100个学生的平均分,以及统计超过平均分的人数。分析:1 循环,求出平均分2 循环,求出超过平均分的人数一种算法sum=0.0;int count2=0;for(i=1;i=100;i+)输入输入x;sum=sum+x;avg

2、=sum/N;for(i=1;i avg)count2+;输出输出 avg,count2;第一次循环计算平均值第二次循环计算超出平均分人数你让我输入两次成绩?更好的解决办法:先把所有数据暂存起来定义 100 个变量?定义变量定义变量 x1,x2,x100;输入输入x1,x2,x100sum=sum+x1;sum=sum+x2;sum=sum+x100;avg=sum/100;count2=0;if(x1avg)count2+;if(x2avg)count2+;.if(x100avg)count2+;输出输出count2变量名看起来很有规律,却无法利用循环的好处for(i=1;i=100;i+)

3、sum=sum+xi;X需要使用需要使用“数组数组”5.1 数组数组 具有相同类型的数据按一定顺序组成的序列,数组中的每一个数据都可以通过数组名及下标来存取a0a0 a1a1 a2a2 a3a3 a4a4 a5a5 a6a6 a7a7数组的所有元素按顺序分配在连续的空间注意:可用下标范围:0 数组长度-1int a=new int8;每一个数组元素可以当作独立的变量使用数组用于存储和表示既与取值有关,又与位置(顺序)有关的数据。数组的类型在C#中,数组属于引用类型。1 数组元素在内存中是连续存放的,这是数组元素用下标表示其在数组中位置的根据。2 C#中的数组类型可以对应任何数据类型,即数组可以

4、是基本数据类型,也可以是类类型,例如,可以声明一个文本框(TextBox)类型的数组。3 C#通过.NET框架中的System.Array类来支持数组,因此,可以使用该类的属性与方法操作数组。5.1.1 一维数组一维数组声明、实例化和初始化一维数组的各种形式参见表5-1一般通过数组下标来访问数组中的数据元素。C#语言还可以通过foreach语句来枚举数组的各个元素【例例5.15.1】一维数组的使用示例:随机产生100个学生的成绩,计算学生的平均成绩,并统计高于平均成绩的学生人数【例例5.25.2】利用一维数组显示Fibonacii数列:1、1、2、3、5、8、的前20项。要求每行显示5项声明一

5、维数组声明一维数组例:char CharArr;/字符型一维数组int intArr;/整型一维数组string StringArray;/字符串一维数组数据类型 数组名;表示数组每个元素的类型表示数组每个元素的类型现在还不能使用数组元素,必须经过实例化才可以使用动态实例化动态实例化-使用使用new 运算符运算符int a;/声明a=new int5;/实例化int IntArr=new int5;int IntArr=new int53,6,9,2,18;数组名=new 数据类型数组长度可以将数组定义和实例化合写在一起例:定义并初始化一个例:定义并初始化一个100个元素的浮点数数组个元素的浮

6、点数数组scorefloat score;score=new float100;float score=new float100;两种方式都正确数组长度可以是无符号整型表达式无符号整型表达式,即非负整数,即非负整数也可以是一个常量表达式,或者变量表达式。int Size=5;int A=new intSize;C#允许声明元素个数为0的数组,例如:int A=new int0;静态初始化(实例化)静态初始化(实例化)例子:int IntArr=3,6,9,2,18;string StringArr=English,Computer,Maths,Chinese;数据类型 数组名=元素1,元素2,

7、.静态初始化数组必须与数组定义结合在一条语句中数组在实例化时,可以为元素指定初始化值。如果为数组指定初始化值,可以省略对元素个数的说明:int A=new int 1,2,3,4,5;可以将声明数组的语句“int A=new int51,2,3,4,5;”简化为:int A=1,2,3,4,5;为数组指定初始化的值可以是变量表达式,例如:int x=1,y=2;int A=new int5x,y,x+y,y+y,y*y+1;一旦要为数组指定初始化值,就必须为数组的所有元素指定初始化值,指定值的个数既不能多于数组的元素个数,也不能少于数组的元素个数。访问一维数组访问一维数组使使用用数数组组名名与

8、与下下标标(索索引引)可可以以唯唯一一确确定定数数组组中中的某个元素,从而实现对该元素的访问。的某个元素,从而实现对该元素的访问。数组名下标可以是任何整型表达式例如:例如:int x=4,y=5;int A=new int31,2,3;/使用数组第1个元素的值为其他变量赋值x=A 0;A 1=y;/为数组第2个元素赋值 在在访访问问数数组组元元素素时时,要要注注意意不不要要使使下下标标越越界界,例例如:如:int A=new int5;A5=15;/下标越界下标越界可可以以在在实实例例化化数数组组时时为为数数组组的的所所有有元元素素初初始始化化指指定定的的值值,但但不不能能在在赋赋值值语语句句

9、中中使使用用一一个个赋赋值值运运算算符为整个数组赋值,例如:符为整个数组赋值,例如:int A=new int31,2,3;/正确正确A=4,5,6;/错误,试图为整个数组赋值错误,试图为整个数组赋值int a=new int8;a2=10;int i=5;Console.Write(ai-3);for(i=0;i8;i+)ai=i*i;这样用当然没有问题下标可以是表达式便于使用循环变量控制下标这样的for循环变量最适合做数组下标for(i=0;iN;i+)例:数组声明与访问例:数组声明与访问using System;class ArrayTest static void Main(strin

10、g args)int numbers;/定义一个一维数组定义一个一维数组 numbers=new int6;/动态初始化数组动态初始化数组 for(int i=0;i numbers.Length;i+)numbersi=i*i;Console.WriteLine(numbers0=1,i,numbersi);例:定义一个数组,使其元素值为对应下标值的平方,并输出数组中的元素使用 数组名.Length 可以获取数组的长度练习题:练习题:定义一个长度为10的浮点浮点数数组 x进行动态或者静态初始化将每个元素赋值为下标的开方 Math.Sqrt()foreachforeach循环语句循环语句C#专

11、门提供了一种用于遍历数组的foreach循环语句。foreach循环语句的格式为:foreach(类型名称类型名称 变量名称变量名称 in 数组名称数组名称)循环体循环体语句中的“变量名称”是一个循环变量,在在循循环环中中,该该变变量量依依次次获获取取数数组组中中各各元元素素的的值值。因此,对于依次获取数组中各元素值的操作,使用这种循环语句就很方便。要注意,“变量名称”的类型必须与数组的类型一致。例如,假定有一个整型数组A,则用foreach语句获取数组中和元素的值并输出到label1控件的Text属性中的代码为:foreach(int i in A)label1.Text=label1.Te

12、xt+i+;foreach语句遍历数组虽然很方便,但其功能受一定的限制,例如,如果想为数组各元素依次有规律赋值,foreach循环将无能为力。5.1.2 多维数组多维数组多维数组的声明、实例化和初始化与一维数组的声明、实例化和初始化相类似。声明多维数组时,用逗号表示维数,一个逗号表示两维数组,两个逗号表示三维数组,以此类推。注意:在声明数组声明中即使没有指定维数的实际大小,也必须使用逗号分隔各个维例1例5C#支持两种类型的多维数组。第一种是矩形数组,也称等长数组【例例5.3】二维数组的使用 声明多维数组声明多维数组在多维数组中,比较常用的是二维数组二维数组可以保存二行二列的同类型数据6行4列的

13、同类数据,可以使用64的二维数组保存int,data=new int6,4;data0,0=98;.定义数组和分配空间访问数组元素,使用两个下标指定行和列声明二维数组与声明一维数组格式类似例如:char,CharArr;int,A;数据类型,数组名数组元素类型数组元素类型声明多维数组时,用逗号表示维数,一个逗号表示二维数组,两个逗号表示三维数组,依次类推。二维数组的初始化二维数组的初始化数组名数组名=new 数据类型数据类型长度长度1,长度长度2;例:例:int,IntArr=new int3,2;int,A=new int2,21,2,3,4;注意:上面定义的数组IntArr中包含3X2=6

14、个元素,下标分别为 0,0,0,1,1,0,1,1,2,0,2,1 访访问问多多维维数数组组需需要要用用多多个个下下标标唯唯一一确确定定数数组组中中某某个个元素,例如:元素,例如:/声明一个4行4列的二维数组int,Ar=new int4,4;Ar1,2=15;/为第2行第3列的元素赋值int a=Ar1,2;/用第2行第3列的元素为其他变量赋值也也可可以以”行行基基准准”给给二二维维数数组组静静态态赋赋值值,但但一一般般不不用用静静态态赋赋值值给给超超过过二二维维的的多多维维数数组组.要要访访问问二二维维数数组组中中的的所所有有元元素素可可以以使使用用双双重重循循环环来来实实现现,通通常常外

15、外循循环环控制行,内循环控制列。控制行,内循环控制列。例:通过二重循环,将例:通过二重循环,将1-121-12赋值给一个二赋值给一个二维数组,并显示数组内容维数组,并显示数组内容static void Main(string args)int t,i;int,table=new int3,4;for(t=0;t 3;t+)/给二维数组赋值给二维数组赋值 for(i=0;i 4;i+)tablet,i=(t*4)+i+1;/填数填数 for(t=0;t 3;t+)/显示二维数组的值显示二维数组的值 for(i=0;i 4;i+)Console.Write(tablet,i+“t”);/横向跳格横

16、向跳格 Console.WriteLine();练习:练习:定义一个定义一个4行行4列的列的double 型数组型数组将数组所有元素按图设置:将数组所有元素按图设置:输出该数组在对角线上的元素值输出该数组在对角线上的元素值多维数组介绍多维数组介绍C#可以使用多维数组3维数组的下标有三个整数,4维数组的下标有4个整数,依次类推多维数组的使用和二维数组的使用方法类似,根据数组的维数确定方括号中的逗号的个数例:定义一个三维数组:string,StringArr=new string3,2,4;数组数组总结总结数组(array)是一种数据结构,它包含相同类型的一组数据数组有一个“秩(秩(rankran

17、k)”,它确定和每个数组元素(element)关联的索引个数,其值是数组类型的方括号之间逗号个数加上1。数组的秩又称为数组的维度。“秩”为 1 的数组称为一维数组(single-dimensional array),“秩”大于 1 的数组称为多维数组(multi-dimensional array)。维度大小确定的多维数组通常称为两维数组、三维数组等数组的每个维度都有一个关联的长度(length),它是一个大于或等于零的整数。创建数组实例时,将确定维度和各维度的长度,它们在该实例的整个生存期内保持不变。换而言之,对于一个已存在的数组实例,既不能更改它的维度,也不可能调整它的维度大小数组属性数组

18、属性(1)数组使用类型声明,通过数组下标(或称索引)来访问数组中的数据元素。(2)数组可以是一维数组、多维数组。(3)数组元素可以为任何数据类型,包括数组类型。(4)数组下标(索引)从0开始:具有 n 个元素(即维度长度为n)的数组的下标是从 0 到 n-1。(5)数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。(6)数组中的元素总数是数组中各维度长度的乘积。(7)通过.NET框架中的System Array类来支持数组。因此,可以利用该类的属性与方法来操作数组数组注意事项数组注意事项数组必须先声明:类型名称类型名称 数组名数组名;数组在声明后必须实例化才能使用:数组名称数组

19、名称 =new=new 类型名称类型名称 数组长度数组长度;数组声明和实例化可以使用一条语句实现类型名称类型名称 数组名称数组名称 =new=new 类型名称类型名称 数组长度数组长度;数组在实例化时,可以为数组元素指定初始化值数组名称数组名称 =new=new 类型名称类型名称 数组长度数组长度 初始值设定项初始值设定项;(1)如果为数组指定初始化值,则可以省略对数组长度的说明(2)如果在声明数组时将其初始化,可以不必再次声明数组类型(3)一旦要为数组指定初始化值,就必须为数组的所有元素指定初始化值,指定值的个数既不能多于数组长度,也不能少于数组长度可以声明一个数组变量但不将其初始化,但在将数组分配给此变量时必须使用 new 运算符

展开阅读全文
收益排行: 01、路***(¥15400+),
02、曲****(¥15300+),
03、wei****016(¥13200+),
04、大***流(¥12600+),
05、Fis****915(¥4200+),
06、h****i(¥4100+),
07、Q**(¥3400+),
08、自******点(¥2400+),
09、h*****x(¥1400+),
10、c****e(¥1100+),
11、be*****ha(¥800+),
12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服