写好的PASCAL程序为什么只能用CDM运行 续2

来源:百度知道 编辑:UC知道 时间:2024/09/18 03:53:40
可是,按照循环,我又遇到了另一个问题。对于字符型的运算发生了问题。
我无论怎么定义都不能退出,只能强行 立即结束 。以下是代码:
program test1(input,output);
var
ch1,qd,hj,z:char;
sz:integer;
begin
repeat
writeln('input chr ch1');
read(ch1);
sz:=ord(ch1);
qd:=pred(ch1);
hj:=succ(ch1);
writeln('ch1=',ch1:5,'its num', sz:6,'ts qiandao',qd:6,'its houji',hj:6);
writeln('input out to leave');
readln(z);
until (z='out')
end.

我的定义是输入 out 回车后要退出,可是不行,它依旧在算,我当时以为是字符串的问题,就把out 改为了 n ,可是,n 本身就是字符,输入会计算,这样就不能结束了。我不知道对于计算字符型的要循环和结束它,准确的该怎么做?

之前,我写的是简单的计算圆周长,我用的循环和结束有不错的效果,以下是代码,大家看看对不对(我试过可以用)。
program hkf(input,output);
const
pi=3.14;
var
r,l:real;
z:char;
begin
repeat
writeln('Attention ,press ENTER after any input');
writeln('please input r to caculat

你定义的z是字符型数据(char),只能存储一个字符,所以当然不能读入'out'了,它只会读入第一个字符'o'。
要想让变量读入一个字符串(就是一串字符),要定义为字符串类型(string)而不是char。

还有一个问题:在读入字符时,回车也算两个字符(chr(13)和chr(10)),那么它就会挤在后来输入的字符之前,影响后来字符的读入。要想摆脱回车符的干扰,在读入字符时要用readln(ch1),即在读入括号内的变量后立即换行,同时不管你在同一行的后面输入了多少数据,都会被忽略(包括回车符)。
程序
program test1(input,output);
var
ch1,qd,hj:char;
z:string;
sz:integer;
begin
repeat
writeln('input chr ch1');
readln(ch1);
sz:=ord(ch1);
qd:=pred(ch1);
hj:=succ(ch1);
writeln('ch1=',ch1:5,'its num', sz:6,'ts qiandao',qd:6,'its houji',hj:6);
writeln('input out to leave');
readln(z);
until (z='out')
end.