A+B 投入产出实践(三)你的任务是计算 a + b。你的任务是计算 a + b。输入输入包含多个测试用例。每个测试用例包含一对整数 a 和 b,每行一对整数。包含 0 0 的测试用例会终止输入,

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    int  a ,b;
    while(sc.hasNext()) {
        
        
            
                a=sc.nextInt();
                b=sc.nextInt();
                if(a==0&&b==0) {
                    break;
                }
                else {
                System.out.println(a+b);
                }
        
    }
}
}

### 将中缀表达式转换为后缀表达式的步骤 对于给定的中缀表达式 `a+b*c*(d*e+f)*g`,可以按照以下方式将其转换为后缀表达式: #### 处理过程 当处理字符时遵循特定规则来决定如何操作这些字符。具体来说, - 数字或变量直接输出[^2]。 - 遇到左括号直接入栈;遇到右括号则将栈内自最近一次遇见左括号以来的所有运算符依次弹出并输出,随后丢弃这对匹配的括号中的左部分。 针对此表达式,逐步解析如下: 1. 读取 `a`,作为操作数直接输出得到 `a`。 2. 接下来是加法符号 `+`,由于当前为空栈故直接压入堆栈,现在栈状态 `[+]`。 3. 继续读取字母 `b` 并立即打印出来形成字符串 `ab`。 4. 下一个是乘法符号 `*`,其优先级高于已存在于栈内的 `+` 符号,则先将后者存留于栈底而前者加入其中使得新的栈结构变为 `[+,*]`。 5. 出现另一个星号 `*` 前面已有相同级别的算子存在于是乎二者均需等待后续元素到来再做进一步判断之前暂时保持原样即 `[+,*,*]`。 6. 左圆括号 `( ` 到达立刻送入临时存储区准备迎接内部成员构成的小团体 `[+,*,*,( ]`。 7. 字母序列 `d`, `e` 连续被识别随即连同中间夹带的操作符一同展现:先是单独呈现各自身份特征接着遭遇相乘关系最终组合成形如 `abde*` 的片段。 8. 加减交替模式启动——发现连接两个独立实体间桥梁作用的正号 `+` 后迅速跟进下一个待加工对象 `f` 结果累积至目前阶段表现为 `abde*f`。 9. 右侧封闭标志 `)` 显露促使先前隐藏起来的部分重见光明释放路径上的一切阻碍直至触及对应的开启端点期间产生的副产物累加进总成果里头变成这样 `abde*f+`。 10. 新一轮乘法规则生效前一刻确认无误地把旧有记录更新完毕即由原先单纯的叠加演变成更为复杂的嵌套形式 `abde*f+c*`。 11. 最终因子 `g` 插入既定位置完成整个链条组装工作产出预期目标样式 `abde*f+c*g`。 12. 清除剩余未决事项确保所有残留项均已妥善安置结束本次变换流程获得完整的逆波兰表示法版本 `abde*f+c*g+`. 因此,该中缀表达式转化为后缀表达式的正确结果应为 `abde*f+c*g+`[^1]. ```python def infix_to_postfix(expression): precedence = {'+':1,'-':1,'*':2,'/':2} stack = [] # only pop when ) is encountered or operator with less/equal precendence comes up. output = '' for char in expression: if char.isalpha(): output += char elif char == '(': stack.append(char) elif char == ')': while stack and stack[-1]!='(': output+=stack.pop() stack.pop() # remove ( else: while (stack and stack[-1]!='(' and precedence[char]<=precedence[stack[-1]]): output+=stack.pop() stack.append(char) while stack: output+=stack.pop() return output print(infix_to_postfix("a+b*c*(d*e+f)*g")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值