虽然没有多少分数,但是开发脑力(关于字符排列) (10分)

G

gudong

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i,j,low,index : integer;
hald : char;
str: string;
data: array[1..30] of char;
begin
//产生随机的字符
str:='';
for i := 1 to 30 do
begin
data:=chr(random(26)+65);
//为了比较
str:=str+data;
end;
listbox1.Items.Add(str);
//排序
for i := 1 to 30 do
begin
low :=i ;
str:='';
for j :=1 to 30 do
begin
if data[j] > data[low] then
{这里是问题理论上应该是"<",但是非要">"
结果才正确,不然就是倒的}
begin
low :=j;
str:='';
if data<> data[low] then
begin
hald :=data;
data:=data[j];
data[j]:=hald;
end;
end;
end;
//以下为参看结果
for index:=1 to 30 do
begin
str:=str+data[index]+',';
end;
listbox2.Items.Add(str);
end;
end;
以上内容通过delphi5+win2000测试通过
为什么不是"<"而是">"才正确?
 
嘻,好玩
 
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,low,index : integer;
hald : char;
str: string;
data: array[1..30] of char;
begin
//产生随机的字符
str:='';
for i := 1 to 30 do
begin
data:=chr(random(26)+65);
//为了比较
str:=str+data;
end;
listbox1.Items.Add(str);
//排序
for i := 1 to 30 do
begin
str:='';
for j :=i+1 to 30 do
begin
if data >data[j] then
begin
str:='';
if data<> data[j] then
begin
hald :=data;
data:=data[j];
data[j]:=hald;
end;
end;
end;
end;
//以下为参看结果
for index:=1 to 30 do
str:=str+data[index]+',';
listbox2.Items.Add(str);
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
763
import
I
I
回复
0
查看
644
import
I
顶部