Pascal程序不能用

Pascal程序不能用,第1张

如果你指的是pascal回到了编辑界面:携吵输入之后按回车就把readln给做完了,接谈隐歼下来就会做输出语句,所以你按含冲下回车后程序马上就会做完。这是属于正常的。

如果你指的是程序运行好之后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,看最后一行,TOTAL

ERRORS,后面如果虚亏显示为0,那么才能运行,否则就不行,然后你再按回车,找到错误,改正,再运行

2.你没有读入文件,在最后END.之前的一行输入READLN即可

3.如果再不行,那么FREE

PASCAL这个程序有问镇誉则题,像我家,没一个错误也硬生生给你蹦出个2个错误御棚来


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12293966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存