一道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不算),跪求讲解
展开
 我来答
120410999
2009-10-15 · TA获得超过865个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:236万
展开全部
第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
都找出来了
百度网友940cf39
2009-10-15 · TA获得超过318个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:166万
展开全部
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.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙德焮Er
2009-10-15 · TA获得超过708个赞
知道答主
回答量:160
采纳率:0%
帮助的人:145万
展开全部
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?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu01234122
2009-10-15 · 超过22用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:64.4万
展开全部
1:字符串在读的时候使用readln的
2:多了4个begin end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式