如果你指的是程序运行好之后pascal马上就崩溃并关闭掉:我劝你重启电脑在运行一次(记得保存程序)。
问一下:LZ的原题是不是“输入一道四则运算题,输出结果”?
分析一下:
比如输入: 123+234
先把它存在一个 m 字符串中,我不知道你是用什么方法分离 v 和 w 的值的,我猜错误可能出粗知没在 p 的赋值上:p-1 是否就是那个四则运算符所在的位猛塌置呢?
往其中加入一段语句,就可以很容易验证上岩纳述猜测:
case m[p-1] of
'*':jisuan:=v*w
'/':jisuan:=v/w
'+':jisuan:=v+w
'-':jisuan:=v-w
else writeln('error') //加入这句;
end
如果错误不在此,我的猜测是:
w 可能在某个输入中被赋值为 0 ;出现“被 0 除”的情况;
如果LZ将 v 和 w 都定义为整型(integer/longint),是不能用 / 这个除号的,应改为 div ,不过输出结果就不对了;
分离 v 和 w 的代码不对。
为了作为参考,下面附上我的代码,其中的变量就用LZ定义的好了:
var m:string
p,v,w,jisuan,code:longint
begin
readln(m)
repeat
inc(p)
until (m[p]='+')or(m[p]='-')or(m[p]='*')or(m[p]='/')
val(m[1..p-1],v,code)
val(m[p+1..length(m)],w,code) //这个 val 是pascal中的字符串函数,知道的吧;
case m[p] of
'*':jisuan:=v*w
'/':jisuan:=v div w //注:我这里是用整除的,如果要保留,LZ可以自己改一下;
'+':jisuan:=v+w
'-':jisuan:=v-w
end
writeln('The Answer Is:',jisuan)
end.
代码及可执行文件.exe见附件。
1.按AIT+F9,看最后一行,TOTALERRORS,后面如果虚亏显示为0,那么才能运行,否则就不行,然后你再按回车,找到错误,改正,再运行
2.你没有读入文件,在最后END.之前的一行输入READLN即可
3.如果再不行,那么FREE
PASCAL这个程序有问镇誉则题,像我家,没一个错误也硬生生给你蹦出个2个错误御棚来
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)