讨论 / 看看程序啊!!!
auroral 2010-10-13 21:34:00
点我顶贴 收藏 删除
为什么输入类似1-7之类数字数据的时候 运行到work2的时候 b返回就是一片乱码 = =

var

a,s:ansistring;

p1,long,p2,p3,i,j:longint;

k:boolean;

p:array[1..30000] of string;

b:string;

function pan(var x,y:char):boolean;

begin

if ((ord(x)>=48)and(ord(x)<=57)and(ord(y)>=48)and(ord(y)<=57)and(x<=y)) or

((ord(x)>=97)and(ord(x)<=122)and(ord(y)>=97)and(ord(y)<=122)and(ord(x)<=ord(y))) then

pan:=true;

end;

procedure work1;

var b1:char;

begin

b1:=b[1];

if p1=2 then if (ord(b1)>=97)and(ord(b1)<=122) then b:=chr(ord(b1)-32);

if p1=3 then b:='*';

end;

procedure work2;

var m:longint; q:string;

begin

for m:=1 to p2 do

q:=q+b;

b:=q;

end;

procedure work3;

var

i:longint; q:string;

begin

if p3=2 then for i:=length(b) downto 1 do

q:=q+b[i];

b:=q;

end;

begin

k:=false;

readln(p1,p2,p3);

readln(a);

long:=length(a);

p[1]:=a[1];

p[long]:=a[long];

for i:=2 to long-1 do

if a[i]='-' then begin

if ord(a[i-1])=ord(a[i+1]) then begin p[i]:=a[i]; continue; end;

k:=pan(a[i-1],a[i+1]);

if k=true then

if ord(a[i-1])+1=ord(a[i+1]) then continue

else begin

for j:=ord(a[i-1])+1 to ord(a[i+1])-1 do

begin

b:=chr(j);

work1;

work2;

work3;

p[i]:=p[i]+b;

end;

end;

end

else p[i]:=a[i];

for i:=1 to long do

s:=s+p[i];

writeln(s);

end.

查看更多回复
提交回复