主题:在else后提示语句错,请问高手,这是什么原因???
caline
[专家分:20] 发布于 2008-11-17 16:22:00
输入一个三位数,要求出个十百数顺序相反的数
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个回复)
沙发
C入门选手 [专家分:0] 发布于 2008-11-21 22:09:00
我以前学的是PASCAL 但是很久没用了 现在用的都是C了```今天突然想来PASCAL区逛逛 结果就到你这了```你这程序看起来是没错的呀```我电脑里没P 不好调试``不过我提醒下哈 错误提示在这行的时候有时候错会在前一行 这是我以前的经验
板凳
guo0937 [专家分:0] 发布于 2008-11-22 12:02:00
if .... then ....else...是一个完整的语句,所以else前面不能有分号。
上面程序中的错误在于then后面用复合子语句“begin....end”后面有分号。这样电脑会认为“if ....then....”语句已经结束,所以就不认识下面一行的 else....了。
改正:把上一行end后面的分号去掉。
经验:在编译时经常会出现因为错在上一行末尾,而提示错在当前行的现象。
初来乍到,水平不高,能帮上忙,很高兴。
3 楼
maxumi [专家分:2200] 发布于 2008-11-30 07:13:00
这程序格式有点那个啥……
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 楼
wangzhongqi96 [专家分:40] 发布于 2009-02-03 22:57:00
END后多了一个分号,请给我加分,谢谢,致敬,不胜感激
5 楼
313008415 [专家分:0] 发布于 2009-03-21 13:02:00
?
6 楼
w75317 [专家分:530] 发布于 2009-04-08 21:27:00
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 楼
w75317 [专家分:530] 发布于 2009-04-08 21:28:00
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 楼
woshizhu [专家分:30] 发布于 2009-04-15 21:05:00
end后面不要分号
9 楼
神的思想 [专家分:80] 发布于 2009-06-28 13:54:00
end后面多了一个分号!请给我加分,感恩不尽
10 楼
1l2j3y [专家分:0] 发布于 2009-07-31 22:00:00
多了一个;
我来回复