Pascal语言(二维数组).ppt
二、多维数组1.1.1.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;var s:array1.4,1.5 of integer;var s:array1.4,1.5 of integer;var s:array1.4,1.5 of integer;12345109876111213141520191817164.4.4.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.5689497865859988899775698785846585846892565865696278987889857869887785456574688778757677788578848684l1l2l3l4l5l6l1l2l3l4l5l6l7l8l9l10var yh:array1.10,1.10 of integer;i,j:integerbegin 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行。杨辉三角形如图:111121133114641奇数魔方阵。把整数1到n2(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.