pascal字符型输入

来源:百度知道 编辑:UC知道 时间:2024/05/03 11:51:28
var
a,b:integer;
c:longint;
ch:char;
begin
read(a,ch,b);
c:=0;
case ch of
'+':c:=a+b;
'-':c:=a-b;
'*':c:=a*b;
end;
write(c);
end.

检验正确,但是输入12*12错误....
求高手解答.谢谢
提示必须一排输入

这个程序的问题是出在你读数的时候,ch什么也没有读进去,虽然程序看起来没什么问题没什么,但是读数之后ch读的并不是你要读的,所以程序不对,我写了一个程序,你看看吧
var
a,b:integer;
c:longint;
ch:char;
s1,s:string;
begin
readln(s);
s1:='';
for c:=1 to length(s) do
if ord(s[c])>47 then s1:=s1+s[c]
else begin
ch:=s[c];
val(s1,a);
s1:='';
end;
val(s1,b);
c:=0;
case ch of
'+':c:=a+b;
'-':c:=a-b;
'*':c:=a*b;
end;
write(c);
end.
中间的那个循环是将读入的字符串中的数字和符号分开的,先每一位每一位看,如果读到的第i位是符号,则把前面的字符串转换成数存在a里面,把符号存在ch中,后面的字符串再存在b里,然后后面就是你的思路了