
Pascal里的case语句,求助! 试编写一个根据用户键入的两个操作数和一个运算符由计算机输出运算结果的程序
整个程序是这样但是怎么把操作数与运算符写同一行?如'5+3'?我只能这样输入'53''+'求助!!!varresult,x,y:real;ch:char;flag:boo...
整个程序是这样
但是怎么把操作数与运算符写同一行?如'5+3'?
我只能这样输入'5 3'
'+'
求助!!!
var
result,x,y:real;
ch:char;
flag:boolean;
begin
readln(x,y);
readln(ch);
result:=0;
flag:=true;
case ch of
'+':result:=x+y;
'-':result:=x-y;
'*':result:=x*y;
'/':if y <>0 then
result:=x/y;
else
flag:=false;
end;
if flag then writeln(result:0:2)
else writeln('Error');
end. 展开
但是怎么把操作数与运算符写同一行?如'5+3'?
我只能这样输入'5 3'
'+'
求助!!!
var
result,x,y:real;
ch:char;
flag:boolean;
begin
readln(x,y);
readln(ch);
result:=0;
flag:=true;
case ch of
'+':result:=x+y;
'-':result:=x-y;
'*':result:=x*y;
'/':if y <>0 then
result:=x/y;
else
flag:=false;
end;
if flag then writeln(result:0:2)
else writeln('Error');
end. 展开
4个回答
展开全部
这个简单,我在区里比赛时写过:
program exp;
var c,op:string[1];
sc:string;
a,b:longint;
err:integer;
begin
assign(input,'exp.in');reset(input);
assign(output,'exp.out');rewrite(output);
read(INPUT,c);
sc:='';
while (c<>'+')and(c<>'-')and(c<>'*') do
begin
sc:=sc+c;
c:='';
read(input,c);
end;
val(sc,a,err);
sc:='';
op:=c;
c:='';
read(INPUT,c);
sc:='';
while not eof(input) do
begin
sc:=sc+c;
c:='';
read(input,c);
end;
sc:=sc+c;
val(sc,b,err);
if op='+' then writeln(output,a+b);
if op='-' then writeln(output,a-b);
if op='*' then writeln(output,a*b);
close(input);
close(output);
end.
program exp;
var c,op:string[1];
sc:string;
a,b:longint;
err:integer;
begin
assign(input,'exp.in');reset(input);
assign(output,'exp.out');rewrite(output);
read(INPUT,c);
sc:='';
while (c<>'+')and(c<>'-')and(c<>'*') do
begin
sc:=sc+c;
c:='';
read(input,c);
end;
val(sc,a,err);
sc:='';
op:=c;
c:='';
read(INPUT,c);
sc:='';
while not eof(input) do
begin
sc:=sc+c;
c:='';
read(input,c);
end;
sc:=sc+c;
val(sc,b,err);
if op='+' then writeln(output,a+b);
if op='-' then writeln(output,a-b);
if op='*' then writeln(output,a*b);
close(input);
close(output);
end.
追问
= =你的回答真的是pascal语言么。。看不懂。。
追答
我不就是加了文件吗?我给你换调。
program exp;
var c,op:string[1];
sc:string;
a,b:longint;
err:integer;
begin
read(c);//读入第一个字符。
sc:='';
while (c'+')and(c'-')and(c'*') do//后面不是‘+’,‘-’,‘*’就继续
begin
sc:=sc+c;//累加到sc里面
c:='';
read(c);//继续读入
end;
val(sc,a,err);//转换数值
sc:='';
op:=c;
c:='';//清空
read(c);
sc:='';
while not eoln do//没有按enter就继续
begin
sc:=sc+c;
c:='';
read(c);
end;
sc:=sc+c;
val(sc,b,err);
if op='+' then writeln(a+b);
if op='-' then writeln(a-b);
if op='*' then writeln(a*b);
end.
展开全部
分离一下就可以了,用string类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存入数组再输出?
追问
写这个题目时好像还没学到数组。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用pos()函数和字符串可以吗?
追问
还没学到函数。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询