回 帖 发 新 帖 刷新版面

主题:在else后提示语句错,请问高手,这是什么原因???

输入一个三位数,要求出个十百数顺序相反的数
if (i>0) and (i<1000) then
   begin a:=trunc(i/100);
         b:=trunc((i-100*a)/10);
         c:=i-a-b;
         s:=c*100+b*10+a;
   end;
else write('not in law');{意思是想说输入的数不在范围内}
end.

在else后提示语句错,请问高手,这是什么原因???

回复列表 (共18个回复)

沙发


我以前学的是PASCAL  但是很久没用了  现在用的都是C了```今天突然想来PASCAL区逛逛 结果就到你这了```你这程序看起来是没错的呀```我电脑里没P  不好调试``不过我提醒下哈  错误提示在这行的时候有时候错会在前一行  这是我以前的经验

板凳


if .... then ....else...是一个完整的语句,所以else前面不能有分号。

上面程序中的错误在于then后面用复合子语句“begin....end”后面有分号。这样电脑会认为“if ....then....”语句已经结束,所以就不认识下面一行的 else....了。

改正:把上一行end后面的分号去掉。

经验:在编译时经常会出现因为错在上一行末尾,而提示错在当前行的现象。

初来乍到,水平不高,能帮上忙,很高兴。

3 楼

这程序格式有点那个啥……

if (i>0) and (i<1000) then
   begin a:=trunc(i/100);
         b:=trunc((i-100*a)/10);
         c:=i-a-b;
         s:=c*100+b*10+a;
   end;
else write('not in law');{意思是想说输入的数不在范围内}
end.

这样似乎好点?
if (i>0) and (i<1000) then
  begin
    a:=trunc(i/100);
    b:=trunc((i-100*a)/10);
    c:=i-a-b;
    s:=c*100+b*10+a;
  end
else
  write('ILLEGAL');{意思是想说输入的数不在范围内}
end.

4 楼


END后多了一个分号,请给我加分,谢谢,致敬,不胜感激

5 楼

?

6 楼

if (i>0) and (i<1000) then
  begin
    a:=trunc(i/100);
    b:=trunc((i-100*a)/10);
    c:=i-a-b;
    s:=c*100+b*10+a;
  end
else
  write('ILLEGAL');{意思是想说输入的数不在范围内}
end.

7 楼

if (i>0) and (i<1000) then
  begin
    a:=trunc(i/100);
    b:=trunc((i-100*a)/10);
    c:=i-a-b;
    s:=c*100+b*10+a;
  end
else
  write('ILLEGAL');
end.

8 楼

end后面不要分号

9 楼

end后面多了一个分号!请给我加分,感恩不尽

10 楼

多了一个;

我来回复

您尚未登录,请登录后再回复。点此登录或注册