一道free pascal题目
vari:string;j:array[1..10]ofinteger;a,b,c:integer;beginread(i);b:=1;c:=0;beginfora:=1...
var
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if 48<=chr(i[a])<=57 then
begin
j[b]:=chr(i[a])-chr('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
有五个错误(program不算),跪求讲解 展开
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if 48<=chr(i[a])<=57 then
begin
j[b]:=chr(i[a])-chr('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
有五个错误(program不算),跪求讲解 展开
4个回答
展开全部
第6行的
read(i); 应写成
readln(i);
因为回车符也是字符,如果不加ln,就会导致出不了输出. 这有一个.
第12行的
48<=chr(i[a])<=57 应写成
(48<=ord(i[a]))and(ord(i[a])<=57)
不能使用连续条件
chr为转字符函数,字符不能和数字比
这有两个错误
第14行的
j[b]:=chr(i[a])-chr('0');
应写成
j[b]:=ord(i[a])-ord('0');
j为整数数组不能存放字符类型量
这又有两个错误
1+2+2=5
都找出来了
read(i); 应写成
readln(i);
因为回车符也是字符,如果不加ln,就会导致出不了输出. 这有一个.
第12行的
48<=chr(i[a])<=57 应写成
(48<=ord(i[a]))and(ord(i[a])<=57)
不能使用连续条件
chr为转字符函数,字符不能和数字比
这有两个错误
第14行的
j[b]:=chr(i[a])-chr('0');
应写成
j[b]:=ord(i[a])-ord('0');
j为整数数组不能存放字符类型量
这又有两个错误
1+2+2=5
都找出来了
展开全部
var
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if (48<=ord(i[a]))and(ord(i[a])<=57) then
begin
j[b]:=ord(i[a])-ord('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if (48<=ord(i[a]))and(ord(i[a])<=57) then
begin
j[b]:=ord(i[a])-ord('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if (48<=ord(i[a]))and(ord(i[a])<=57) then
begin
j[b]:=ord(i[a])-ord('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
我帮你改了一下,chr是数字转为字符,ord是字符转为数字。还有判断语句不能用连等。
understand?
i:string;
j:array[1..10] of integer;
a,b,c:integer;
begin
read (i);
b:=1;
c:=0;
begin
for a:=1 to 10 do
begin
if (48<=ord(i[a]))and(ord(i[a])<=57) then
begin
j[b]:=ord(i[a])-ord('0');
inc(b);
end;
end;
end;
begin
for a:=1 to 9 do
begin
c:=c+a*j[a];
end;
end;
begin
if c mod 11=j[10] then write('right')
else write(c mod 11);
end;
end.
我帮你改了一下,chr是数字转为字符,ord是字符转为数字。还有判断语句不能用连等。
understand?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1:字符串在读的时候使用readln的
2:多了4个begin end
2:多了4个begin end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询