c语言字符串不等于怎么表示,算法问题。求用c语言写一个字符串输入的计算器。如1+2*3=7。输入的均为整数,不需要有括号什么的...

算法问题。求用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

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值