Delphi中这段话While为什么造成了我程序死循环?
代码如下,我用意是在stringgrid1的第二列产生不相同的0到19之间的随机数,共20行,但是运行程序就卡住了,请教高手我哪步写错了,谢谢!procedureTFor...
代码如下,我用意是在stringgrid1的第二列产生不相同的0到19之间的随机数,共20行,但是运行程序就卡住了,请教高手我哪步写错了,谢谢!
procedure TForm1.Button1Click(Sender: TObject);
var
I,X,U,W:integer;
S:string;
begin
X:=20;
I:=0;
begin
Randomize;
for I:=0 to X do
begin
W:=1;
while W>=1 do
begin
W:=0;
S:= IntToStr(Random(X)+0);
for U:=0 to I do
begin
if StringGrid1.Cells[1,U]=S then
begin
W:=W+1;
end;
end;
end;//对应 while W>=1 do这句
StringGrid1.Cells[1,I]:=S;
end;//对应for I:=0 to X do这句
end;
end; 展开
procedure TForm1.Button1Click(Sender: TObject);
var
I,X,U,W:integer;
S:string;
begin
X:=20;
I:=0;
begin
Randomize;
for I:=0 to X do
begin
W:=1;
while W>=1 do
begin
W:=0;
S:= IntToStr(Random(X)+0);
for U:=0 to I do
begin
if StringGrid1.Cells[1,U]=S then
begin
W:=W+1;
end;
end;
end;//对应 while W>=1 do这句
StringGrid1.Cells[1,I]:=S;
end;//对应for I:=0 to X do这句
end;
end; 展开
2个回答
2013-05-20
展开全部
procedure TForm1.btn1Click(Sender: TObject);
var
b: array[1..20] of integer;
i, temp: integer;
begin
for i := 1 to 20 do
b[i] := i;
for i := 1 to 20 do
begin
temp := Random(20 - i + 1) + 1;
StringGrid1.Cells[1, i] := IntToStr(b[temp]);
b[temp] := b[20 - i + 1];
end;
end;
var
b: array[1..20] of integer;
i, temp: integer;
begin
for i := 1 to 20 do
b[i] := i;
for i := 1 to 20 do
begin
temp := Random(20 - i + 1) + 1;
StringGrid1.Cells[1, i] := IntToStr(b[temp]);
b[temp] := b[20 - i + 1];
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询