算法问题。求用c语言写一个字符串输入的计算器。如1+2*3=7。输入的均为整数,不需要有括号什么的
答案:4 信息版本:手机版
解决时间 2021-05-07 11:07
已解决
2021-05-07 02:36
算法问题。求用c语言写一个字符串输入的计算器。如1+2*3=7。输入的均为整数,不需要有括号什么的,结果要有小数。把结果存放在一个字符数字里。
最佳答案
2021-05-07 03:36
思路:反复扫描,发现了*或者\,则将左边的值和右边的值替换为两者的计算结果,然后替换,最后扫描+或者-,计算结果。
全部回答
1楼
2021-05-07 05:23
百度了一下,可以参考一下别人的结果
http://bbs.bccn.net/thread-303187-1-1.html
2楼
2021-05-07 04:43
program jisuanqi;
var nextch:char;
result:real;
procedure readnextch;
{读下一个字符的过程}
begin
repeat
if eoln then nextch:=';'
else begin
read(nextch);
write(nextch);
end;
until nextch<>'';
end;
procedure readnumber(var number:real);
{读数的过程}
var scale:real;
begin
{处理整数部分}
number:=0;
while nextch in['0'..'9'] do
begin
number:=number*10+ord(nextch)-ord('0');
readnextch;
end;
if nextch='.' then begin
{处理小数部分}
scale:=1;
readnextch;
while nextch in['0'..'9'] do
begin
number:=number*10+ord(nextch)-ord('0');
scale:=scale*10;
readnextch;
end;
number:=number/scale;
end;
end;
procedure readexpression(var exprvalue:real);
{读表达式的过程}
var addop:char;
nexttermval:real;
procedure readterm(var termvalue:real);
{读项的过程}
var mulop:char;
nextfacval:real;
procedure readfactor(var factorvalue:real);
{读因子的过程}
begin
if nextch in['0'..'9'] then readnumber(factorvalue) {读数}
else if nextch='(' then begin
readnextch;{读表达式}
readexpression(factorvalue);
if nextch=')' then readnextch
else writeln('error');
end
else begin
writeln('error');
factorvalue:=1;
end;
end;
begin
{读因子}
readfactor(termvalue);
while nextch in ['*','/'] do
begin
mulop:=nextch;
readnextch;
{读下一个因子}
readfactor(nextfacval);
{因子与因子乘除}
case mulop of
'*':termvalue:=termvalue*nextfacval;
'/':termvalue:=termvalue/nextfacval;
end;
end;
end;
begin
{读项}
readterm(exprvalue);
while nextch in ['+','-'] do
begin
addop:=nextch;
readnextch;
{读下一项}
readterm(nexttermval);
{项与项加减}
case addop of
'+':exprvalue:=exprvalue+nexttermval;
'-':exprvalue:=exprvalue-nexttermval;
end;
end;
end;
begin
readnextch;
{读表达式}
readexpression(result);
{输出结果}
writeln('=',result:20:6);
end.这个是我初中那会整的代码,参考一下这个,回答下面附了一张图:
http://zhidao.baidu.com/question/148843124
3楼
2021-05-07 04:34
看一下满足你要求不
http://hi.baidu.com/rankabc/item/ecc00796de62c9f47a7f0148
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯