比如有3个字符x y z,要生成如下结果:
xxxx
xxxy
xxxzxxyx
xxyy
xxyz……
我用循环做的,可惜没有结果啊var
ch:array[1..3] of Char;
str:string[4];
i,j:Integer;
str0:string;
begin
ch := 'x01'; for i:=1 to 4 do
for j:=1 to 3 do
str[i]:=Ch[j]; //应该是这里的问题,自己是新手,不知道怎么改啊 str0:=str + str0 ;
ShowMessage(str0);
xxxx
xxxy
xxxzxxyx
xxyy
xxyz……
我用循环做的,可惜没有结果啊var
ch:array[1..3] of Char;
str:string[4];
i,j:Integer;
str0:string;
begin
ch := 'x01'; for i:=1 to 4 do
for j:=1 to 3 do
str[i]:=Ch[j]; //应该是这里的问题,自己是新手,不知道怎么改啊 str0:=str + str0 ;
ShowMessage(str0);
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i,j,k,l:integer;
const
c:array[1..3] of char='xyz';
begin
Memo1.Clear;
for i:=1 to 3 do
for j:=1 to 3 do
for k:=1 to 3 do
for l:=1 to 3 do
begin
s:=c[i]+c[j]+c[k]+c[l];
Memo1.Lines.Add(s);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str,Temp : string;
I ,II,III : Integer;
begin
str := 'xyz';
for I := 1 to Length(str) do
begin
Temp := Str[I];
for II := 1 to Length(str) do
begin
Temp := Temp+ Str[II];
for III := 1 to Length(str) do
begin
case III of
1 : begin
Temp := Temp + Str[III];
Memo1.Lines.Add(Temp);
end;
2 : begin
Temp := Temp + Str[III];
Memo1.Lines.Add(Temp);
end;
3 : begin
Temp := Temp + Str[III];
Memo1.Lines.Add(Temp);
end;
end;
Temp := Str[I]+Str[II];
end;
Temp := Str[I];
end;
end;
end;
const
N = 5; //生成的序号的位数
Chars: array[0..2] of Char = ('x', 'y', 'z');
var
i, j: Integer;
s: String;
begin
j := 1;
for i := 1 to N do j := j * 3;
for i := 0 to j - 1 do
begin
s := '';
j := i;
while j > 0 do
begin
s := Chars[j mod 3] + s;
j := j div 3;
end;
for j := 1 to N - Length(s) do s := Chars[0] + s;
Memo1.Lines.Add(s);
end;
end;