流星一瞬间 发表于 2012-2-26 19:51:24

关于小甲鱼数组第一课(即:015课)的问题

在本次课里小甲鱼老师给做了个小程序(即:显示10个随机数,输出最大数及下标),源码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
ran_num:array of integer;
i:integer;
max,max_i:integer;
begin
edit1.text:='';
edit2.text:='';
edit3.text:='';
   for i:=1 to 10 do
   begin
   ran_num:=10+random(90);
   edit1.Text:=edit1.Text + inttostr((ran_num)) + ',';
   end;
   edit1.text:=copy(edit1.Text,1,length(edit1.text)-1);
   max:=ran_num;
   max_i:=1;
   for i:=2 to 10 do
   begin
   if (max<ran_num) then
    begin
   max:=ran_num;
   max_i:=i;
    end;
   end;
   edit2.Text:=inttostr(max);
   edit3.Text:=inttostr(max_i);
end;
end.
以下是我的疑问:
1、我认为此程序中的变量 i ,就是数组的下标,最终把 i 的值赋给了max_i ,因此感觉没有必要重新定义个max_i 变量。可是如果我不定义max_i ,直接用 i 的话 ,程序运行后,显示的下标值紧显示一个数字:11.并不随着随机数的改变而改变。这是为什么了???求解....

2、max_i:=1; 感觉没什么用啊,为什么要赋值个1给下标变量那? 我直接把此语句删除后,经试验程序正常运行。因此我认为此语句多余。我的想法对吗??为什么了??求解....

先谢谢各位了~~~~~我还很菜哦...

流星一瞬间 发表于 2012-2-28 12:50:17

本帖最后由 流星一瞬间 于 2012-2-28 13:09 编辑

谁来给恢复一下啊等好几天了

sbwcwusi 发表于 2012-2-28 17:39:28

流星一瞬间 发表于 2012-2-28 12:50 static/image/common/back.gif
谁来给恢复一下啊等好几天了

你循环体内没有数组下标

流星一瞬间 发表于 2012-2-29 00:38:48

sbwcwusi 发表于 2012-2-28 17:39 static/image/common/back.gif
你循环体内没有数组下标

详细点啊看不懂你说的什么

gglhy 发表于 2012-3-3 22:00:26

在判断下标的时候,i表示从2~10共9种情况来和被设置为默认最大的第一个2位随机数进行比较;
而max_i则表示9种情况比较完以后,最大的2位数是在第几种情况出现的;
我猜按照楼主的理解则是把 i 和 max_i 等同起来了。须知i总会跑到10才截止,但是max_i代表的下标不一定是第十个随机数,这个最大的随机数可能在第5位就出现了。

这是我的理解,或许有错误,但还算是种思路吧。敬请指正!{:1_1:}

流星一瞬间 发表于 2012-3-4 14:25:57

gglhy 发表于 2012-3-3 22:00 static/image/common/back.gif
在判断下标的时候,i表示从2~10共9种情况来和被设置为默认最大的第一个2位随机数进行比较;
而max_i则表示 ...

你说的我好像明白点了。呵呵我再考虑考虑....

冲啊大笼包 发表于 2016-11-13 08:45:51

{:10_279:}

fishc1008 发表于 2016-12-31 11:48:03

学习学习
页: [1]
查看完整版本: 关于小甲鱼数组第一课(即:015课)的问题