pascal的简单程序问题。

programtest;vara,b,c:integer;beginread(a,b);if(a<=31)and(a>0)thenbeginif(b>999)thenwr... program test;

var a,b,c:integer;

begin

read(a,b);
if(a<=31)and(a>0) then
begin
if(b>999)
then write('cuowu');
end

else
begin

if(b<=999)and(b>=100)then c:=1000*a+b else
if(b<=99) and (b>=10)then c:=100*a+b else
if(b<=9 ) and (b >=1)then c:=10*a+b

write(c);
end

else write('cuowu');

end.

哪有错误??
展开
 我来答
我最爱诸葛亮
2010-09-10 · TA获得超过138个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:115万
展开全部
LZ的错误有两处。
第一处:
if(b<=999)and(b>=100)then c:=1000*a+b else
if(b<=99) and (b>=10)then c:=100*a+b else
if(b<=9 ) and (b >=1)then c:=10*a+b
write(c);
这个地方,if(b<=9 ) and (b >=1)then c:=10*a+b最后要加上分号,即 if(b<=9 ) and (b >=1)then c:=10*a+b;
第二处,请LZ注意自己语句的逻辑关系,
if(a<=31)and(a>0) then
begin
if(b>999)
then write('cuowu');
end
这一句你用一个BEGIN END结束了 if(b>999) then write('cuowu'); 的逻辑关系,所以,下面紧接着的ELSE表示不满足条件if(a<=31)and(a>0)。这样的话,也就说你的程序中主体部分中只有1个IF语句,但你在程序的结尾 else write('cuowu');请LZ自己看看,这个ELSE是没有IF语句在前面作为条件语句的,所以最后这句else write('cuowu');是多余的。

解决的办法:LZ要么把最后一句ELSE WRITE直接删除,要么就把这句
if(a<=31)and(a>0) then
begin
if(b>999)
then write('cuowu');
end
改成
if(a<=31)and(a>0) then
if(b>999) then write('cuowu')
else
这两种改法都可以,当然,实际运行时候的结果是完全不同的,因为逻辑顺序都不同
dribllec
2010-09-09 · TA获得超过107个赞
知道答主
回答量:105
采纳率:0%
帮助的人:128万
展开全部
var a,b,c:integer;
begin
read(a,b);
if(a>31)or(a<1)or(b>999)or(b<1) then write('cuowu')
else begin
if (b>=100)then c:=1000*a+b
else if (b>=10)then c:=100*a+b
else if (b>=1)then c:=10*a+b;
write(c);
end;
end.

其实输出就一句:write(a,b);就够了,不用c出场,即:

var a,b:integer;
begin
read(a,b);
if(a>31)or(a<1)or(b>999)or(b<1) then write('cuowu')
else write(a,b);
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式