一道初学的Pascal题

来源:百度知道 编辑:UC知道 时间:2024/06/03 20:11:30
Program sl;
Var
oper:char;
x,y:real;
Begin
read (x,oper);
write (x:8:2,oper);
while oper<>'=' do
begin
read (y);
write (y:8:2);
Case oper of
'+':x:=x+y;
'-':x:=x-y;
'*':x:=x*y;
'/':x:=x/y
end;
read (oper);
write (oper)
end;
writeln (x:8:2)
end.
这个是书上的例题,是一个稍微复杂的计算器,但是我打出来了,无法运行,我可是和书上的写的一样啊...谁可以教教我错在哪?
怎么改正才行?谢谢。

首先,不要边读边输(把你程序中前面的write语句删了),如果想把运算的式子都输出来,可以用数组再运算过程中记录参与运算的数字和运算符。
其次,还有个输入问题。你可以参考书上对于字符型和数值型输入的区别和注意。还有一个好用的方法就是把read改成readln,这样就可以避免对在这问题上的牵绊了。当你学了文件,你就能理解对输入文件的操作了。

将这些都改过来,程序肯定可以正确运行,我已经调试过了,如果还有问题,可以继续问,我一定回答详细。

Program sl;
Var
oper:char;
x,y:real;
Begin
x:=0;
oper:='+';
while oper<>'=' do
begin
readln (y);
writeln (y:8:2);
Case oper of
'+':x:=x+y;
'-':x:=x-y;
'*':x:=x*y;
'/':x:=x/y;
end;
readln (oper);
writeln (oper);
end;
writeln (x:8:2);
end.

很多地方忘了打分号或逗号

可以运行啊。不信你试试