数组类型是具有相同类型的元素按一定的顺序组成的序列数组中数据元素被顺序安排在内存中一段连续的区域,可以通过数组名来访问在Object Pascal中数组分为静态数组和动态数组,我来为大家讲解一下关于判断数组的数据类型?跟着小编一起来看一看吧!
判断数组的数据类型
5.静态数组数组类型是具有相同类型的元素按一定的顺序组成的序列。数组中数据元素被顺序安排在内存中一段连续的区域,可以通过数组名来访问。在Object Pascal中数组分为静态数组和动态数组。
静态数组在程序初始化时必须分配内存单元,明确数组的大小和元素的数据类型。而动态数组在定义和声明时只指定数组的类型,而不指定数组的大小,在程序运行时动态地开辟内存空间。
本节我们介绍静态数组的使用。
5.1一维数组的定义数组通常分为一维、二维和多维数组。一维数组的定义格式:
type
<数组类型名> = array[<下标类型>] of <基类型>;
如:
type
One2TenArray = array[1..10] of Integer;
上面的语句定义了One2TenArray数组类型,其元素下标从1到10,每个元素的类型为整型。
在Object Pascal中:
举例如下:
type
Color = (red, green, blue, yellow, black, white);
Ten = 0..10;
ColorArray = array[Color] of integer;
TenArray = array[Ten] of Color;
数组变量的声明与其他变量的声明相同,如:
var
a1, a2: ColorArray;
c1, c2: TenArray;
也可以直接声明,如:
var
a1, a2: array[0..10] of Real;
sa: array[Boolean] of String;
使用数组名加方括号,方括号中是数组元素的下标值来访问。如:
a1[3]
sa[True]
在Object Pascal中:
在Object Pascal中,标准函数Low和High,可以返回数组的最小下标值和最大下标值;Length函数可以返回数组的长度。
一维数组的应用示例:产生10个随机数,计算10个随机数的最大值、最小值、和、平均数。界面如下图:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
a: array[1..10] of integer;
i, sum, max, min: integer;
mean: Real;
begin
// 计算按钮单击事件
for i := 1 to 10 do
begin
randomize;
a[i] := random(i * 100);
Memo1.Lines.Add(IntToStr(a[i]))
end;
sum := 0;
max := a[1];
min := a[1];
for i := 1 to 10 do
begin
sum := sum a[i];
if a[i] > max then max := a[i];
if a[i] < min then min := a[i];
end;
mean := sum / Length(a);
Edit1.Text := IntToStr(sum);
Edit2.Text := FloatToStr(mean);
Edit3.Text := IntToStr(max);
Edit4.Text := IntToStr(min);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// 清除按钮单击事件
Memo1.Lines.Clear;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
end;
二维静态数组是指一个数组中的元素又是一个一维数组,定义格式:
type
<数组类型名> = array[<下标类型1>] of array[<下标类型2>] of <基类型>;
也可以采用如下格式:
type
<数组类型名> = array[<下标类型1, 下标类型2>] of <基类型>;
如:
type
TIArr = array[1..10] of array[1..10] of integer;
TDoubleArr = array[1..10, 1..10] of Real;
var
i1: TIarr;
d1: TDoubleArr;
m1: array [1..5,1..10] of real;
示例:输出九九乘法表,界面如下图:
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
const
SPACE8 = ' ';
SPACE10 = ' ';
var
a: array [1..9] of array [1..9] of integer;
i, j: integer;
s: string;
begin
for i := 1 to 9 do
for j := 1 to 9 do
a[i,j] := 0;
for i := 1 to 9 do
for j := 1 to i do
a[i,j] := i * j;
s := SPACE10;
for i := 1 to 9 do
s := s inttostr(i) SPACE10;
Memo1.Lines.Add(s);
s := '';
for i := 1 to 9 do
begin
s := s inttostr(i) SPACE8;
for j := 1 to i do
begin
if a[i,j] = 0 then continue;
if a[i,j] < 10 then
s := s ' ' inttostr(a[i,j]) SPACE8
else
s := s inttostr(a[i,j]) SPACE8;
end;
Memo1.Lines.Add(s);
s := '';
end;
end;
多维静态数组的一般定义格式:
type
<数组类型名> = array[<下标类型1, 下标类型2, ..., 下标类型n>] of <基类型>;
如:
type
TW3 = array of [1..10, 1..10, 1..10] of integer;
var
a: TW3