资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,二、多维数组,1.,多维数组与二维数组,多维数组:,当一个数组中的数组元素具有两个或两个以上的下标时,这种数组称为多维数组。在,free pascal,中由于可使用内存扩充到,2GB,原则上没有维数限制,但每个数组变量所占内存字节数将很大。如果不是特别需要,一般不要超过三维。多维数组都是在一维数组的基础上衍生出来的,当组成一维数组的各个元素本身又均为数组时,该数组即为多维数组。,二维数组:,涵义:基类型本身又是一个一维数组的数组。,例如:,一维数组:,type,数组类型名,=array,下标类型,1 of,数组元素类型,;,二维数组:,type,数组类型名,=array,下标类型,1,下标类型,2 of,数组元素类型,;,2.,二维数组的定义:,二维数组定义与一维数组类同,只是下标类型有,2,个。,2,个下标类型规定该数组为二维数组及,2,个下标的取值范围,同时规定数组元素的个数。,定义的两种形式:,type,区定义,,var,区说明。,type,数组类型名,=array,下标类型,1,,下标类型,2,of,数组元素类型;,例如:,type,week=(sun,mon,tue,wed,thu,fri,sat);,class=arraymon.sat,1.7 of char;,var,class1,class2:class;,直接在,var,区中说明数组。,例如:,var,s:array1.4,1.5 of integer;,说明:,习惯上,把二维数组理解成二维表格(或矩阵)的形式,将下标,1,理解为行号,将下标,2,理解成列号。,常量说明:(用于给数组变量赋初始值),一行一行列举法。,例如:一个四阶方阵,const,n=4;,unimax:array1.n,1.nof integer,=(1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1),(1,0,1,0),(0,1,1,0),(0,1,0,1),(0,0,0,1);,3.,二维数组的存储,:,Turbo pascal,按,行优先,的顺序存储数组元素,依次把各行的元素放入,一串连续的存储单元,中,数组的存储如图所示:,var s:array1.4,1.5 of integer;,1,2,3,4,5,10,9,8,7,6,11,12,13,14,15,20,19,18,17,16,4.,应用举例,输入,10,名学生,5,门功课的成绩,输出各人各科成绩及总分。,var,score:array1.10,1.6 of integer;,i,j:integer;,begin,for i:=1 to 10 do,scorei,6:=0;,for i:=1 to 10 do,for j:=1 to 5 do,begin,read(scorei,j);,scorei,6:=scorei,6+scorei,j;,end;,for i:=1 to 10 do,begin,for j:=1 to 6 do,write(scorei,j:6);,writeln;,end;,end.,56,89,49,78,65,85,99,88,89,97,75,69,87,85,84,65,85,84,68,92,56,58,65,69,62,78,98,78,89,85,78,69,88,77,85,45,65,74,68,87,78,75,76,77,78,85,78,84,86,84,1,2,3,4,5,6,1,2,3,4,5,6,7,8,9,10,var,yh:array1.10,1.10 of integer;,i,j:integer,begin,yh1,1:=1;,for i:=2 to 10 do,begin,yhi,1:=1;yhi,i:=1;,for j:=2 to i-1 do,yhi,j:=yhi-1,j-1+yhi-1,j;,end;,for i:=1 to 10 do,begin,write(,:40-3*i);,for j:=1 to i do write(yhi,j:6);,writeln;,end;,end.,打印杨辉三角形的前,10,行。杨辉三角形如图:,1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,奇数魔方阵。把整数,1,到,n,2,(,n,为奇数)排成一个,n*n,的方阵,使得方阵中每一行、每一列以及对角线上的数和相等。,var,magic:array1.100,1.100 of integer;,i,j,k,h,l,n:integer;,begin,read(n);,for i:=1 to n do,for j:=1 to n do,magici,j:=0;,k:=1;i:=1;j:=n div 2+1;,magici,j:=k;,while kn*n do,begin,k:=k+1;h:=i-1;l:=j-1;,if h=0 then h:=n;if l=0 then l:=n;,if magich,l=0 then,begin,magich,l:=k;i:=h;j:=l;,end,else,begin,magici+1,j:=k;i:=i+1;,end;,end;,for i:=1 to n do,begin,for j:=1 to n do write(magici,j);,writeln;,end;,end.,
展开阅读全文