冒泡程序V1.0的问题
implementationvar
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 ;大家给分析分析。谢谢了
来个人给回复一下嘛都等好几天了哦来帮一把吧亲~~ 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 对错的问题是说不清的,还是要实践,排序正确它就是对的,否则就是错的
你认为它不对,可能是你的冒泡法的编程思路与小甲鱼的不一样,你可以将小甲鱼的程序运行
一下试试,再改为你认为对的,再试试,看看谁是对的
甚至可以按照自己的思路重新写一个程序,只要结果是对的就好,不需要纠结程序的每一段,关键是
要理解冒泡法的原理! {:10_245:}{:10_245:} 学习学习
页:
[1]