PTA 7-4 简单计算器

7-4 简单计算器

分数 20

作者 张彤彧

单位 浙江大学

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10


#include<stdio.h>
int main()
{
    int a,b,flag=0;
    char op;
    scanf("%d",&a);
    while(1)
    {
        scanf("%c",&op);
        if(op =='=')
        {
            break;
        }
        
        scanf("%d",&b);
        switch(op)
        {
            case '+':a=a+b;break;
            case '-':a=a-b;break;
            case '*':a=a*b;break;
            case '/':
                if(b==0) flag = 1;
                else a=a/b; break;
            default: flag = 1;   
        }
        if(flag==1)
        {
            break;
        }
    }
    if(flag==1)
    {
        printf("ERROR");
    }
    else
    {
        printf("%d",a);
    }
    return 0;

超级巧妙,当它没有break时,它将一直执行下去,一开始只需给定一个a,后续的数值b以及符号可以一直添加,其中又用了switch函数,分多种情况进行了讨论,属实巧妙,真的很厉害,很值得揣摩,属于入门的一道比较有趣且基础的题目!

### PTA 题目 7-2 简易计算器解析 PTA 题目 7-2 要求设计一个简易计算器程序,能够处理基本的四则运算操作(加法、减法、乘法和除法)。以下是该题目的实现思路以及代码示例。 #### 功能需求分析 简易计算器的核心功能是对两个输入数值执行指定的操作符计算。具体来说,用户需提供三个参数:第一个数 `a`、第二个数 `b` 和操作符 `op`。支持的操作符包括 `'+'`, `'-'`, `'*'`, `'/'`。对于非法输入或特殊情形(如除零错误),应返回相应的提示信息[^1]。 #### 设计方案 为了完成此任务,可以采用如下逻辑结构: 1. 接收用户的输入数据; 2. 判断输入的有效性并验证操作符合法性; 3. 执行对应的算术运算; 4. 输出结果或者异常消息。 下面是一个 Python 的解决方案: ```python def simple_calculator(): try: a, op, b = input().split() # 输入形如 "num1 operator num2" a, b = float(a), float(b) # 将字符串转换成浮点数 if op == '+': result = a + b elif op == '-': result = a - b elif op == '*': result = a * b elif op == '/': if b != 0: # 检查分母是否为零 result = a / b else: return 'Divided by zero!' else: return 'Invalid operation!' # 如果不是合法的操作符,则报错 return f'{result:.2f}' # 返回保留两位小数的结果 except Exception as e: return 'Error occurred during calculation!' print(simple_calculator()) ``` 上述代码实现了对标准输入流中的三部分——两数及其间的一个二元运算符——进行读取,并依据给定条件完成了相应计算[^2]。注意这里采用了异常捕获机制来增强健壮性;当遇到无法预料的情况时,比如不恰当的数据类型转化尝试,函数会优雅退出而不是崩溃。 #### 测试案例 考虑几个典型的测试场景可以帮助确认算法行为符合预期: | **Input** | **Output** | |-------------------|------------------| | `5 + 8` | `13.00` | | `-7 * 3` | `-21.00` | | `9 / 0` | `Divided by zero!` | | `abc - def` | `Error occurred during calculation!` | 以上表格展示了不同情况下的表现特征[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hana.hxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值