模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。 输入格式: 输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。 输出格式: 在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“error”。
时间: 2023-04-25 07:03:02 浏览: 3021
简易计算器 (C语言)作业
\u8fd0\u884c\u7a0b\u5e8f\u53ef\u4ee5\u4f7f\u7528\u4e00\u884c\u7684\u6587\u5b57\u4e32\u8fdb\u884c\u6a21\u62df\uff0c\u8fd9\u4e2a\u6a21\u62df\u7b80\u5355\u8fd0\u7b97\u5668\u5b9e\u73b0\u4e0b\u9762\u4e00\u4e2a\u56db\u5219\u8fd0\u7b97\u7684\u793a\u4f8b\uff1a
\u4e00\u4e2a\u7b97\u5f0f\u53ef\u4ee5\u4e3a\uff1a5 + 3 - 2 =
\u6b63\u786e\u7684\u8fd0\u7b97\u987a\u5e8f\u662f\uff1a5 + 3 - 2 = 6
\u8fd0\u7b97\u8be6\u7ec6\u8bf4\u660e\uff1a
1. \u9996\u5148\u8fdb\u884c\u52a0\u6cd5\u8fd0\u7b97\uff1a5 + 3 = 8
2. \u5728\u524d\u4e00\u6b21\u7684\u7ed3\u679c8\u4e0a\u6267\u884c\u51cf\u6cd5\uff1a8 - 2 = 6
\u56db\u5219\u8fd0\u7b97\u7684\u987a\u5e8f\u4e3a\uff1a\u9996\u5148\u8fdb\u884c\u4e24\u4e2a\u4e00\u5bf9\u7684\u8fd0\u7b97\uff1a
1. \u5b57\u7b26\u7c7b\u578b\u51b2\u7a81\uff1a\u56db\u5219\u8fd0\u7b97\u4e2d\uff0c\u4e00\u4e9b\u7b26\u53ef\u80fd\u4f1a\u88ab\u62d2\u7edd\uff0c\u56e0\u4e3a\u5b83\u4eec\u7684\u4f18\u5148\u7ea7\u76f8\u540c\uff0c\u6240\u4ee5\u5fc5\u987b\u6309\u7167\u7a7a\u683c\uff0c\u6309\u7167\u7b2c\u4e00\u4e2a\u53f7\uff0c\u6309\u7167\u7b2c\u4e8c\u4e2a\u53f7\uff0c\u6309\u7167\u7b2c\u4e09\u4e2a\u53f7\uff0c\u6309\u7167\u7b2c\u56db\u4e2a\u53f7\u7684\u987a\u5e8f\u8fdb\u884c\u8fdb\u884c\u8ba1\u7b97\u3002
2. \u5b57\u7b26\u5e8f\uff1a\u5这是一个模拟简单计算器的工作,假设计算器只能进行加减乘除运算,运算数和结果都是整数,按从左到右的顺序计算。输入格式: 输入在一行中给出一个四则运算式子,即不超过3个由空格隔开的、或以“=”结束的非负整数,其间以1个空格隔开,且没有多余的空格。当以“=”结束时,整个输入行不超过100个字符;否则,不超过50个字符。输出格式: 如果该算式合法,则输出运算结果;否则输出“ERROR”。题目保证结果在32位整数范围内。
示例:
输入:
1 + 2 =
输出:
3
输入:
1 + 2 * 3 + 4 =
输出:
11
输入:
1 + a * 3 + 4 =
输出:
ERROR
解析:
本题考查模拟,需要考虑各种不同的情况,如输入的式子是否合法,不合法的情况有哪些,如何进行计算等。具体步骤如下:
1. 读入输入字符串,并去除多余空格。
2. 判断输入字符串是否以“=”结尾,如果是则表示输入完整,否则表示输入不完整,输出ERROR。
3. 对于输入完整的情况,分别提取出运算数和运算符,并进行相应的计算。需要注意的是,由于按照从左到右的顺序计算,所以需要判断当前运算符的优先级是否低于前一个运算符的优先级,如果是则需要先计算前一个运算符的结果。
4. 最后输出计算结果。
其中,判断运算符优先级的方法可以使用一个栈来实现。如果当前运算符的优先级低于栈顶运算符的优先级,则需要先计算栈顶运算符的结果。可以使用两个栈来实现,一个栈存储运算数,另一个栈存储运算符,具体实现见代码。
阅读全文