• 模拟题7


    题目大意就是读入一个字符串,为一个加减法的表达式,例如

    '3215+3214-45+1=' 的形式,让你计算结果

    需要注意的是可能第一个字符是‘-’(负号),

    而且中间过程也可能出问题

    这就使得某些同学的打法会出问题,解决办法就是

    在前面加一个比较大的数,

    使计算过程中不会出现负数

    代码如下

    View Code
     1 program sky;
    2 const
    3 maxn=100000; maxs='100000';
    4 var
    5 s,ss:string;
    6 tp,tpp,x,y,k:longint;
    7 ch:char;
    8 function min(qq,ww:longint):longint;
    9 begin
    10 if qq<ww then exit(qq); exit(ww);
    11 end;
    12 begin
    13 readln(s);
    14 if s[1]='-' then s:=maxs+s else s:=maxs+'+'+s;
    15 while pos('+',s)+pos('-',s)<>0 do
    16 begin
    17 tp:=pos('+',s); tpp:=pos('-',s);
    18 if tp*tpp=0 then k:=tp+tpp else k:=min(tp,tpp);
    19 ss:=copy(s,1,k-1); val(ss,x); ch:=s[k];
    20 delete(s,1,k);
    21 tp:=pos('+',s); tpp:=pos('-',s);
    22 if tp+tpp=0 then
    23 begin
    24 ss:=copy(s,1,pos('=',s)-1);
    25 val(ss,y);
    26 if ch='+' then writeln(x+y-maxn) else writeln(x-y-maxn);
    27 halt;
    28 end;
    29 if tp*tpp=0 then k:=tp+tpp else k:=min(tp,tpp);
    30 ss:=copy(s,1,k-1);
    31 val(ss,y);
    32 if ch='+' then str(x+y,ss) else str(x-y,ss);
    33 delete(s,1,k-1);
    34 s:=ss+s;
    35 end;
    36 delete(s,length(s),1);
    37 val(s,x);
    38 writeln(x-maxn);
    39 end.

    可能不够简洁。提出意见多多交流

  • 相关阅读:
    AOV网和AOE网对比
    AOV网和AOE网对比
    Python类型总结
    Python数据结构
    Django之认证系统
    day22笔记
    数据库概念知识
    pymsql模块使用
    多表查询(子查询)
    多表查询(链接查询)
  • 原文地址:https://www.cnblogs.com/skysun/p/2437863.html
Copyright © 2020-2023  润新知