讨论 / 谁能帮帮我啊,我这样写为什么会WA80啊
li20082008li 2012-08-28 05:10:00
点我顶贴 收藏 删除
program ex485;

var

a:array[1..9] of integer;

x,s,y,z,i,code:integer;

m,n:string;

begin

readln(m);

n:=m[1];

val(n,z,code);

a[1]:=z;

delete(n,1,1000); z:=0;

for i:=1 to 3 do

begin

n:=m[i+2];

val(n,z,code);

a[i+1]:=z;

z:=0; delete(n,1,1000);

end;

for i:=1 to 5 do

begin

n:=m[i+6];

val(n,z,code);

a[i+4]:=z;

z:=0; delete(n,1,1000);

end;

for i:=1 to 9 do

y:=a[i]*i+y;

y:=y mod 11;

x:=length(m);

if x=13 then n:=m[13] else if x=14 then begin n[1]:=m[13]; n[2]:=m[14]; end;

val(n,z,code);

if y=z then begin writeln('Right'); exit; end

else if y=10 then begin

delete(n,1,1000); delete(m,13,1); n:='X'; insert(n,m,13); writeln(m); exit;

end

else begin

delete(n,1,1000); str(y,n); delete(m,13,1); insert(n,m,13); writeln(m);

end;

end.

#1 jimmy_qian@2012-08-28 05:10:00
回复 删除
我的程序,希望能给予一定的帮助

var

c:char;

tot,i,j:longint;

s:string;

begin

assign(input,'isbn.in'); reset(input);

assign(output,'isbn.out'); rewrite(output);

read(s);

tot:=0;

j:=1;

for i:=1 to 11 do if s[i] in ['0'..'9'] then begin

inc(tot,(ord(s[i])-48)*j);

inc(j);

end;

tot:=tot mod 11;

if tot=10 then c:='X' else c:=chr(tot+48);

if c=s[13] then writeln('Right')

else begin

s[13]:=c;

writeln(s);

end;

close(input); close(output);

end.

查看更多回复
提交回复