流星一瞬间 发表于 2012-3-1 20:41:40

冒泡程序V1.0的问题

implementation
var
   num:array of integer;
   i:integer =1;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=label1.Caption + ' ' +edit1.Text;
num:=strtoint(edit1.Text);
i:=i+1;
edit1.text:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
l,j,k,n:intrger;
begin
for l:=1 to i-1 do
begin
   k:=i-l;
   For j:=1 to k do
   begin
   if (num <num) then
   begin
       n:=num;
       num:=num;
       num:=n;
       end;
   end;
end;
Label1.Caption:='';
For l:=i-1 Downto 1 do
   Label1.Caption:= Label1.Caption + IntToStr(num) + ' ';
end;
end.
以下是我的问题:
1、定义变量 i :integer   这个 i可以认为是数组的下标值 。为什么要赋个初值?且还赋值为1 那??有什么用了?
2、i:=i+1 又有什么用处了???为什么让 i 加1然后赋值给i 了??
3、我觉得K:=i - l 是不对的,应该是K:=i -1 -l ;大家给分析分析。谢谢了

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

来个人给回复一下嘛都等好几天了哦来帮一把吧亲~~

仁意 发表于 2014-10-19 21:00:15

1. 变量i赋初值,是因为不赋初值时,编译时i的值是随机的,可能会令程序出错(尽管概率很低,但是要养   成良好的编程习惯),所有赋初值,至于初值为1,就是个人的习惯问题了,因为习惯了用i作为循环变   量,而循环变量一般初值为1! (也有为0的)

2. i: = i + 1;   只是实现变量 i 的数字加一,由于赋值语句是从右到左的,于是可以这样理解:
         (假设 i 等于 9),“:=”右边 i + 1 的值为10,再将 10 赋值给i ,于是 i 的值为10,
         如此就实现了 i 的值加一(由 9 变为 10)
3. K:=i - l 对错的问题是说不清的,还是要实践,排序正确它就是对的,否则就是错的
    你认为它不对,可能是你的冒泡法的编程思路与小甲鱼的不一样,你可以将小甲鱼的程序运行
   一下试试,再改为你认为对的,再试试,看看谁是对的
   甚至可以按照自己的思路重新写一个程序,只要结果是对的就好,不需要纠结程序的每一段,关键是
要理解冒泡法的原理!

冲啊大笼包 发表于 2016-11-13 08:50:27

{:10_245:}{:10_245:}

fishc1008 发表于 2016-12-31 11:58:36

学习学习
页: [1]
查看完整版本: 冒泡程序V1.0的问题