【题目】:

随机产生20 个三位正整数并存放到一维数组中,然后找出其中的最大值及
其下标。

【实现分析】
        寻找最大值及其下标的方法是:将20个元素进行编号,根据数组的概念把20 个元素赋值给一个数组的各元素自然就编好号了。假定数组的最大元素值为max,最大元素的下标为n_max,首先将第一个元素值及其下标赋值给max和n_max。然后将max 与数组第二个元素比较,若max小于第二个元素,则将第二个元素值赋值给max,下标赋值给n_max,否则不赋值;再将max与第三个第四个直至最后一个元素比较,max小则max和n_max被赋值,否则不赋值。逐一比较完毕,就找到了最大元素及其下标。
        为了随机产生两位数的正整数可以调用Random 函数。例如Trunc(10*Random)将随机产生0~9的整数。由于Random函数产生的数为实型数据,因此调用了Trunc 取整函数。
        由于数组变量在产生随机数和寻找最大值的过程中都要用到,数组变量应在
Implementation部分定义,详见程序代码。

【部分代码】:

procedure TForm1.Button1Click(Sender: TObject);
var
   m:integer; //这是局部变量,只能在本函数或过程里使用
begin
   Randomize;      //为产生互不相同的随机数,程序启动时调用一次Randomize过程
   Edit1.Text :=''; Edit2.Text :=''; Edit3.Text :=''; //清空编辑框
   for m:=low(RanNum) to high(RanNum) do   //相当于m:=1 to 20 do
      begin
         RanNum[m]:=Trunc(100+900*Random);
            //随机产生100~999的三位整数,赋值给一维静态数组RanNum;
        Edit1.Text:=Edit1.Text+IntToStr(RanNum[m])+','; //将随机数赋给Edit1
      end;
  Edit1.Text:=Copy(Edit1.Text,1,Length(Edit1.Text)-1); //去掉最后一个逗号
      //复制从Edit1.text的第1个字符起,到Edit1.Text除了最后一个字符止的所有字符
      //后再重新赋值给Edit1.text,本语句作用即去掉最后一个逗号
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    max,n_max,m:Integer;  //这是局部变量,因此m可以同名
begin
  max:=Low(RanNum);  //把数组RanNum的第1个元素的下标值赋值给Max作为初值
                    //本例与Max:=RanNum[1];同价
  n_max:=1;         //给数组最大值所属下标值赋初值为1
  for m:=(Low(RanNum)+1) to high(RanNum) do   //本例与 for m:=2 to 20 do 同价
     if max<RanNum[m] then     //如果max小于数组的某个元素,
        begin
           max:=RanNum[m];      //就将该元素值赋给最大值max
           n_max:=m;           //并将其下标赋给最大值下标n_max
        end;
   edit2.Text :=IntToStr(max);
   edit3.Text :=InttoStr(n_max); 
end;