【5.高级数据类型】4.静态数组

本文详细介绍了ObjectPascal中的静态数组,包括一维、二维和多维静态数组的定义、声明、访问和应用示例。内容涵盖了一维数组的定义格式、数组变量的声明、数组元素的访问方式,以及标准数组函数的使用。此外,还通过实例展示了二维静态数组和多维静态数组的定义及应用,如九九乘法表的输出。
摘要由CSDN通过智能技术生成

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;

5.2一维数组变量的声明

数组变量的声明与其他变量的声明相同,如:

var
    a1, a2: ColorArray;
    c1, c2: TenArray;

也可以直接声明,如:

var
    a1, a2: array[0..10] of Real;
    sa: array[Boolean] of String;

5.3数组元素的访问

使用数组名加方括号,方括号中是数组元素的下标值来访问。如:

a1[3]
sa[True]

在Object Pascal中:

  • 下标值必须符合数组类型在下标类型的定义,其类型必须与下标类型一致,其值在下标取值范围内

  • 下标也可以是表达式

5.4标准数组函数

在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;

5.5二维静态数组

二维静态数组是指一个数组中的元素又是一个一维数组,定义格式:

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;

5.6多维静态数组

多维静态数组的一般定义格式:

type
    <数组类型名> = array[<下标类型1, 下标类型2, ..., 下标类型n>] of <基类型>;

如:

type
    TW3 = array of [1..10, 1..10, 1..10] of integer;
var
    a: TW3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janeb1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值